/usr/bin/python: 使用subprocess.call时找不到'__main__.py
我正在写一个Python脚本,用来做一些管理功能,这个功能需要运行几个其他的Python脚本。
我的代码片段大概是这样的:
import subprocess
PYTHON_BIN_DIR = '/usr/bin/python'
SCRIPTS_DIR = '/some/path'
if __name__ == "__main__":
dateparam = "05-Jan-2012"
command = [PYTHON_BIN_DIR]
command.extend(SCRIPTS_DIR + "/myfile1.py")
strparams = " --param1={0} ".format(123)
command.extend(strparams)
command.extend(dateparam)
retcode = subprocess.call(command)
if retcode != 0:
# do something
pass
else:
# do something else
pass
我调用的所有脚本都在使用 if __name__ == "__main__"
这个检查。那么,是什么导致了错误呢?
1 个回答
2
正如评论中提到的,你应该使用 append
而不是 extend
。我觉得你遇到的另一个问题是你的参数中包含了空格。我建议把每个参数分开,比如 --param1=123
:
import subprocess
import os.path
PYTHON_BIN_DIR = '/usr/bin/python'
SCRIPTS_DIR = '/some/path'
if __name__ == "__main__":
dateparam = "05-Jan-2012"
command = [PYTHON_BIN_DIR, os.path.join(SCRIPTS_DIR, 'myfile1.py'),
'--param1', 123, '--date', dateparam]
retcode = subprocess.call(command)
if retcode != 0:
# do something
pass
else:
# do something else
pass