我尝试在python代码中启动bash脚本。 假设包含bash脚本的文件名为“/home/myname”/我的文件.sh“,我试过:
import subprocess
subprocess.call(['/home/myname/myfile.sh'])
但我得到:
^{pr2}$当我尝试:
subprocess.call(['/home/myname/myfile.sh'], shell=True)
我得到:
/bin/sh: 1: /home/myname/myfile.sh: not found
我更想提出论点,在网上搜索我发现的方法:
subprocess.call(['/home/myname/myfile.sh', arg1], shell=True)
但自从我得到:
arg1: 1: arg1: /home/myname/myfile.sh: not found
谁能帮帮我吗?:)
我不知道是什么原因导致了你的问题。但我看到了一些我关心的事情:
对于
subprocess.call()
,您应该给出一个字符串列表,第一个是可执行文件的路径,其余的是单个参数;然后您应该使用shell=False
(或者忽略它,因为这是默认值)。或者您传递shell=True
,那么您应该只传递一个字符串(不是字符串列表!)它将由shell解释和拆分,因此它应该包含可执行文件的路径和所有参数(如有必要,在引用的版本中)。在所以要么
subprocess.call([ '/path/to/executable', 'arg1', 'arg2' ]) # shell=False
或者
subprocess.call('/path/to/executable "arg1" "arg2"', shell=True)
出现错误消息
not found
的原因有多种。在a.指定可执行文件路径的错误方法(例如,
shell=True
和字符串列表;没有尝试过)。在b.可执行文件本身不存在(但您检查了您所说的)。在
c.可执行文件不可执行(权限位丢失)。在
可执行文件在它的第一行中指定了一个不存在的解释器(使用
#!
),该解释器不存在(例如#!/bin/sh
或类似的)。这些都适用吗?在
确保脚本:
存在;
设置了可执行位。
另外,请确保在Python脚本中引用脚本时没有使用tilda
~
。在相关问题 更多 >
编程相关推荐