【问题标题】:Redirect subprocess to a variable as a string [duplicate]将子进程作为字符串重定向到变量[重复]
【发布时间】:2011-09-09 21:18:38
【问题描述】:

使用以下命令,它会打印 '640x360'

>>> command = subprocess.call(['mediainfo', '--Inform=Video;%Width%x%Height%', 
'/Users/Desktop/1video.mp4'])

640x360

如何设置一个等于输出字符串的变量,这样我才能得到x='640x360'?谢谢。

【问题讨论】:

标签: python


【解决方案1】:

如果您使用的是 2.7,则可以使用 subprocess.check_output():

>>> import subprocess
>>> output = subprocess.check_output(['echo', '640x360'])
>>> print output
640x360

如果没有:

>>> p = subprocess.Popen(['echo', '640x360'], stdout=subprocess.PIPE)
>>> p.communicate()
('640x360\n', None)

【讨论】:

    【解决方案2】:
    import subprocess
    p = subprocess.Popen(["ls", "-al"], stdout=subprocess.PIPE)
    out, err = p.communicate()
    print out
    

    【讨论】:

    • 我只是在输入相同的答案,但只是想说我建议使用 Popen 而不是 call 因为它稍微更明确并且做同样的事情。 subprocess.call 只是 Popen 的一个便利函数。
    • 但 call() 打印输出并返回进程的退出代码,如果进程成功则为 0。
    • 这是我忘记的一个好点。鉴于此, call() 可能是 2.7 之前的更好方法,但 Scott Anderson 的答案可能在 2.7 中更好,因为它会自动检查名义退出状态。
    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 2012-07-18
    • 2021-04-21
    • 2017-07-21
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多