【问题标题】:Using subprocess to process multiple piped commands使用子进程处理多个管道命令
【发布时间】:2017-02-20 11:50:45
【问题描述】:

我正在尝试将网页的内容下载到文本文件中,并对 url 进行哈希处理以生成唯一的文件名。类似于:

$ echo -n "http://www.hussam.us" | md5sum
de8b64952e61cc4c6a38df2d17bb8e0d  -

下载网页内容不是我的问题;它通过散列生成文件名。我正在 python 终端中尝试此代码,但它正在生成此错误,就好像该模块未导入或安装一样,但实际上是。像“ls”这样的简单命令可以正常工作。

>>> import subprocess    
>>> cmd = 'echo -n "http://www.hussam.us" | md5sum'
>>> call(cmd)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 523, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

谢谢!

【问题讨论】:

    标签: python python-2.7 subprocess


    【解决方案1】:

    尝试将 call(cmd) 改为 call(cmd, shell=True)

    【讨论】:

    • 我做到了,它成功了,但不得不这样称呼它 >>> subprocess.call(cmd, shell=True) de8b64952e61cc4c6a38df2d17bb8e0d - 0 你知道零是从哪里来的吗?非常感谢!
    • 这可能是您的退出代码。如果要捕获输出而不是退出代码,可以使用 subprocess.check_output()
    最近更新 更多