您是否尝试过 Python Subprocess 而不是 os.system?
从How do you use subprocess.check_output() in Python?你可以看到这个简单的演示:
py2.py:
import sys
print sys.argv
py3.py:
import subprocess
py2output = subprocess.check_output(['python', 'py2.py', '-i', 'test.txt'])
print('py2 said:', py2output)
运行它:
$ python3 py3.py
py2 said: b"['py2.py', '-i', 'test.txt']\n"
更新:
我认为您的问题在于您需要在运行 python 脚本之前指定/设置正确的文件夹路径。例如:
假设您有以下文件夹结构:
/root/project/script.py
/root/project/data/file.txt
如果在您的 python 脚本中使用 ./data/file.txt 之类的相对路径加载文件,则需要在 project 文件夹中运行脚本。
如果你在 root 文件夹中运行它,像这样:
/root$ python project/script.py
脚本失败,因为它试图在 root 文件夹中查找 data/file.txt。
您可以在运行 python 脚本之前使用 cd 命令更改当前目录。您可以在调用 os.system 时执行此操作,如下所示:
os.system("cd project && python script.py") # for my example case