私はffprobeを呼び出し、その出力を解析してコンソールに出力するスクリプトを用意しています。ここでSubprocess.communicateは改行を標準出力に出力します
は、解析コードとコマンドラインオプションなしで、それの機能縮小版です:
"""Invoke ffprobe to query a video file and parse the output"""
def ffprobe(fname):
import subprocess as sub
import re
p = sub.Popen(['ffprobe', fname], stderr=sub.PIPE)
stdout, stderr = p.communicate()
def main():
ffprobe("foo.mp4")
#print options.formatstr % locals()
if __name__ == '__main__':
main()
あなたは私のコードでのみprint
文がコメントアウトされていることがわかりますので、プログラムはいけません本当に何かを出力します。しかし、これは私が得るものです:
[email protected]:~/co/youtube$ python ffprobe.py foo.mp4
[email protected]:~/co/youtube$ python ffprobe.py foo.mp4
[email protected]:~/co/youtube$ python ffprobe.py foo.mp4
改行は、それぞれの呼び出しによって神秘的に出力されます。それはどこから来ているのですか?どうすれば対処できますか?
communicate
コール(http://stackoverflow.com/questions/7985334/python-subprocess-proc-stderr-read-introduce-extra-lines)を使用していない点を除いて同様の問題があるようです。
ありがとうございます。 ffprobeからの標準出力をキャプチャするのはやりました。あなたは私が間違って 'stdout'を' stdin'と誤って呼んでいるのを聞いています - 私は急いでいました。私はその後、間違いを訂正しました。 – misha