[英]Calling one Python script inside another with command-line arguments
[英]calling one python script from another python script with arguments stored in a string
我正在尝试从另一个调用 Python 脚本。 我正在使用subprocess
-module 并像这样调用它:
subprocess.call(["python","script.py","parameter_name parameter_value"], shell=False)
问题是当我这样称呼它时,它对单个参数工作正常。 当我有多个参数时,我尝试以这种方式运行它
subprocess.call(["python","script.py","parameter_one_name parameter_one_value", "parameter_two_name parameter_two_value"], shell=False)
由于某种原因,这不起作用,脚本也不会发出任何错误消息。 所以,我尝试这样做
os.system("python script.py parameter_one_name parameter_one_value parameter_two_name parameter_two_value)
这有效并且脚本按预期工作。 我的问题是当参数存储在字符串中时是否可以调用脚本? 例如,
parameter = parameter_one_name parameter_one_value+parameter_two_name parameter_two_value)
带参数执行脚本
到目前为止,我在 SO 上找不到任何东西,所以如果有人可以提供帮助,那将是一个很大的帮助。
您应该将每个参数的值作为列表中的单独项目传递:
subprocess.call(["python","script.py","parameter_one_name","parameter_one_value", "parameter_two_name","parameter_two_value"], shell=False)
如果需要,您可以从较小的列表中组成参数列表:
param1 = ["parameter_one_name", "parameter_one_value"]
param2 = ["parameter_two_name", "parameter_two_value"]
subprocess.call(["python","script.py"] + param1 + param2, shell=False)
当您使用字符串中的单个参数 + 值调用它时,我不知道您的场景究竟是如何工作的; 它不应该,但是如果没有看到您传递的实际值,就无法判断。
如果参数在字典d
:
import sys
import subprocess
params = [x for pair in d.items() if all(pair) for x in pair]
subprocess.check_call([sys.executable, 'script.py'] + params)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.