我想在Linux中运行Python 3的shell脚本,传递两个参数,其中包含指向两个不同文件的文件路径。然后,shell脚本调用用Python 2编写的程序
在Python 3中,我这样调用shell脚本:
import os
import sys
os.chmod('/path/to/sh', 0o777)
subprocess.call(['/path/to/sh', '/path/to/file1', '/path/to/file2'], shell=True)
我的shell脚本如下所示:
#!/bin/sh
set -x
path1=$1
path2=$2
python2 path/to/programme "$path1" "$path2"
现在,文件路径为空,shell脚本返回类似python2 path/to/programme '' ''
的内容。有人知道我如何正确地传递文件路径,以便用Python 2编写的程序能够读取它们吗
或者有没有更简单的解决方案,比如使用subprocess直接调用用Python 2编写的程序
不需要shell脚本。您可以使用
subprocess
直接运行python2
a.py
b.py
运行
./a.py
输出['./b.py', 'foo', 'bar']
您也可以尝试改用past.translation:
shell=True
仅当您执行以下操作时才需要shell将单个字符串拆分为参数,这些参数将标识为程序名及其参数。但是您已经识别了程序名及其参数,所以
这就是你所需要的
通过使用列表和
shell=True
,本质上就是要求Python执行它使用
/path/to/file1
在要执行的命令中设置$0
的值,而不是$1
相关问题 更多 >
编程相关推荐