【发布时间】:2014-07-25 08:42:11
【问题描述】:
我正在编写我的第一个 python 程序,我想运行一个 shell 命令并获取输出。我想以最干净/最pythonic的方式来做。这就是我的atm。 注意:我还想在执行 shell 命令时出现异常时引发异常。
def lsCommand():
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out , err = process.communicate()
returnc = process.returncode
if returnc != 0:
raise Exception(err)
else:
return out
我发现,当我删除 out , err = process.communicate() 行并将其替换为 time.sleep(4) 时(out , err = process.communicate() 是否执行隐式 wait() 方法调用?
def lsCommand():
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(4)
returnc = process.returncode
if returnc != 0:
print returnc
raise Exception(err)
else:
return out
编辑:我使用的是 python 2.7
我想做一个更长的命令 sudo find "/media/usb0" -type f -name "*.JPG" | wc -l,但我不知道如何用 Popen 调用它,有人可以帮忙吗?
【问题讨论】:
标签: python subprocess stdout python-2.x