/usr/bin/python: 使用subprocess.call时找不到'__main__.py

0 投票
1 回答
10101 浏览
提问于 2025-04-17 09:36

我正在写一个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

撰写回答