我有两个位于不同目录的python文件。
folder1
|--> routing.py
folder2
|--> script.py
我想从script.py
执行routing.py
。 script.py
需要多个参数来运行。目前,我正在使用subprocess
模块python。
routing.py
import os
import subprocess
import sys
def test():
dirpath = os.getcwd()
os.chdir(folder2_path)
output = subprocess.check_output([sys.executable, "script.py", param1, param2, param3 ])
但是,我得到
raise CalledProcessError(retcode, cmd, output=output)
还有更好的方法吗?我想念什么吗?
答案 0 :(得分:1)
对我有用
python1.py
import sys
global var
arg1 = sys.argv[1]
arg2 = sys.argv[2]
var = int(arg1) + int(arg2)
print var
下一个文件是
import os
import subprocess
import sys
def test():
dirpath = os.getcwd()
os.chdir('.')
output = subprocess.check_output([sys.executable, "python1.py", '3', '3' ])
print "output: ",output
test()
答案 1 :(得分:1)
此处的代码存在多个问题。希望这是最小的解决方法:
import os
import subprocess
import sys
def test():
return subprocess.check_output([
os.path.join(['folder1', sys.executable],
os.path.join(['folder2', "script.py"],
param1, param2, param3 ])
更好的解决方案是重构script.py
,以便您可以从当前脚本中import
进行重构。从要求当前目录为当前脚本的目录的意义上来说,这也是脆弱的。
答案 2 :(得分:0)
您正试图从其他文件夹中调用脚本。尝试使用../folder2/script.py
作为check_output的参数,或者,如果其他脚本也包含相对/非绝对路径,请考虑重写它,以便您可以从中导入方法和类,而不必尝试在外部执行。 / p>