首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送参数并从python运行bash

问发送参数并从python运行bash
EN

Stack Overflow用户
提问于 2013-10-27 04:04:16
回答 2查看 520关注 0票数 1

我需要一些帮助,从python脚本中运行bash脚本。我有一个向python脚本发送参数的程序(例如,"$1")。我希望从python脚本中运行bash脚本,将参数发送给它,然后在python脚本中接收并打印bash的结果(echo)。这就是我所拥有的:

代码语言:javascript
复制
#!/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)时,一切都很完美。有人能告诉我我做错了什么吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-10-27 04:05:02

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

替换如下:

代码语言:javascript
复制
process = subprocess.Popen('sorter.sh', stdout=subprocess.PIPE, shell=True) 

通过以下方式:

代码语言:javascript
复制
process = subprocess.Popen('sh /path/to/sorter.sh', stdout=subprocess.PIPE, shell=True)

或者:

代码语言:javascript
复制
process = subprocess.Popen(['sh', '/path/to/sorter.sh'], stdout=subprocess.PIPE)
票数 0
EN

Stack Overflow用户

发布于 2013-10-27 07:24:01

要将Python脚本接收到的参数发送到bash脚本,可以使用sys.argv

代码语言:javascript
复制
#!/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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19614508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档