【发布时间】:2020-10-06 07:19:40
【问题描述】:
我想在 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=True。您已经提供了一个单独的字符串列表,这些字符串足以满足exec*将使用的相应系统级函数subprocess的要求。
标签: python subprocess arguments sh filepath