繁体   English   中英

从另一个 python 脚本调用一个 python 脚本,参数存储在字符串中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM