从python发送参数并运行bash

2024-06-01 10:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在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:分拣机.sh:未找到

当我把arg改成'sh分拣机.sh'I getsh:无法打开'分拣机.sh'

我确信bash脚本是有效的。。。当我从shell运行它并提供一个文件(sh分拣机.sh/文件/文件/文件.jpg)一切顺利。谁能告诉我我做错了什么吗?谢谢!在


Tags: 文件echo程序env脚本bash参数bin
2条回答

要将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,那么它将使用abc参数调用{}。

注意:代码期望sorter.sh具有适当的shebangexecute权限(chmod +x /path/to/sorter.sh)。

根据错误消息,当前工作目录中似乎没有sorter.sh。指定脚本的绝对路径。

替换以下内容:

process = subprocess.Popen('sorter.sh', stdout=subprocess.PIPE, shell=True) 

有:

^{pr2}$

或者:

process = subprocess.Popen(['sh', '/path/to/sorter.sh'], stdout=subprocess.PIPE)

相关问题 更多 >