Подпроцесс python сохраняет каждую строку вывода в списке
Я пытаюсь сохранить размеры видеофайлов в папке в списке.
#!/usr/bin/env python
# src_dimensions.py
# requires mediainfo package
import subprocess
proc = subprocess.Popen('mediainfo --Inform="Video;%Width%x%Height%\n" /home/saad/Videos/*.*', shell=True, stdout=subprocess.PIPE)
for line in iter(proc.stdout.readline,''):
print line
Результирующий вывод этой программы:
384x288640x480480x350352x162480x360640x360480x360384x288240x180320x240480x360384x288346x26
Когда я бегу mediainfo
Команда в терминале, каждый размер видео находится на новой строке:
384x288
640x480
480x350
352x162
480x360
Я хочу, чтобы каждое измерение сохранялось как отдельный элемент в списке. Я пытаюсь перебрать stdout
но это не работает
ОБНОВЛЕНИЕ № 1
import subprocess
dim = []
proc = subprocess.Popen('mediainfo --Inform="Video;%Width%x%Height%\\n" /home/saad/Videos/*.*', shell=True, stdout=subprocess.PIPE)
for line in iter(proc.stdout.readline, ''):
dim.append(line.rstrip('\n'))
print dim
Это, кажется, дает мне список, благодаря предложению @Chakib.
['440x360', '320x240', '480x360', '320x240', '480x360', '320x240', '320x240', '400x224', '']
1 ответ
Решение
\Это то, что вы хотите?
#!/usr/bin/env python
# src_dimensions.py
# requires mediainfo package
import subprocess, glob
globpattern = 'path/to/*.*'
cmd = ['mediainfo', '--Inform=Video;%Width%x%Height%\\n']
cmd.extend(glob.glob(globpattern))
proc = subprocess.Popen(cmd,stdout=subprocess.PIPE)
outputlines = filter(lambda x:len(x)>0,(line.strip() for line in proc.stdout))
print outputlines