В программе, которую я поддерживаю, выполняется так:
# count the files in the archive
length = 0
command = ur'"%s" l -slt "%s"' % (u'path/to/7z.exe', srcFile)
ins, err = Popen(command, stdout=PIPE, stdin=PIPE,
startupinfo=startupinfo).communicate()
ins = StringIO.StringIO(ins)
for line in ins: length += 1
ins.close()
- Это действительно единственный способ? Я не могу найти любую другую команду, но кажется немного странным, что я не могу просто попросить количество файлов
-
Как насчет проверки ошибок? Достаточно было бы изменить это на:
proc = Popen(command, stdout=PIPE, stdin=PIPE, startupinfo=startupinfo) out = proc.stdout # ... count returncode = proc.wait() if returncode: raise Exception(u'Failed reading number of files from ' + srcFile)
или мне нужно проанализировать вывод Popen?
EDIT: интересуются 7z, rar, zip-архивами (которые поддерживаются 7z.exe) - но 7z и zip будут достаточно для стартеров