我需要一些帮助,从python脚本中运行bash脚本。我有一个向python脚本发送参数的程序(例如,"$1")。我希望从python脚本中运行bash脚本,将参数发送给它,然后在python脚本中接收并打印bash的结果(echo)。这就是我所拥有的:
#!/usr/bin/env python
import subprocess
process = subprocess.Popen('sorter.sh', stdout=subprocess.PIPE, shell=True)
out, err = process.communicate()
print(out)但是,当我尝试运行它时,我会得到以下错误:/bin/sh: sorter.sh: not
当我将arg改为sh sorter.sh时,我得到了sh:无法打开‘sorter.sh’
我很确定巴什剧本能用..。当我从shell运行它并为它提供一个文件(sh sorter.sh / file /filed/files.jpg)时,一切都很完美。有人能告诉我我做错了什么吗?谢谢!
发布于 2013-10-27 04:05:02
根据错误消息,在当前工作目录中似乎没有sorter.sh。指定脚本的绝对路径。
替换如下:
process = subprocess.Popen('sorter.sh', stdout=subprocess.PIPE, shell=True) 通过以下方式:
process = subprocess.Popen('sh /path/to/sorter.sh', stdout=subprocess.PIPE, shell=True)或者:
process = subprocess.Popen(['sh', '/path/to/sorter.sh'], stdout=subprocess.PIPE)发布于 2013-10-27 07:24:01
要将Python脚本接收到的参数发送到bash脚本,可以使用sys.argv
#!/usr/bin/env python
import sys
from subprocess import check_output as qx
output = qx(["/path/to/sorter.sh"] + sys.argv[1:])
print output,如果将python脚本调用为python-script a b c,那么它将使用a、b、c参数调用sorter.sh。
注意:代码期望sorter.sh具有适当的谢邦和执行权限(chmod +x /path/to/sorter.sh)。
https://stackoverflow.com/questions/19614508
复制相似问题