【发布时间】:2014-03-24 11:37:38
【问题描述】:
我正在使用一个用 Python 编写的脚本,该脚本使用 argparse 模块从命令行获取它的参数。我尝试尽可能少地修改这个文件,因为不同的人都在处理它。
例如:脚本被称为 CLscript.py,我用
来调用它python CLscript.py -option1 arg1 -flag1 -option2 arg2
但我正面临这样一种情况,即我希望将事情自动化更高一级并使用各种脚本生成的参数自动启动此脚本。
我想继续使用此脚本中可用的所有现有选项和标志组织。
例如,当我从 topLevelScript.py 运行 CLscript.py 时:
subprocess.call("python CLscript.py -option1 arg1 -flag1 -option2 arg2")
,我从输出中看到出了点问题,我停止执行 topLevelScript.py,但 CLscript.py 继续在另一个我必须手动终止的 python 进程中独立运行。我不能在调试模式下启动 topLevelScript.py 以在 CLscript.py 的断点处停止。
我想在 python 内部完成这一切,而不需要构建命令行字符串并使用子进程启动 CLscript.py。 每个调用都将保持连接到相同的原始启动,就像函数调用一样,而不是像使用 subprocess.call() 那样创建多个 python 线程。
可能会以某种方式将带有选项、标志和参数的字符串列表传递给脚本?
有没有类似的
import CLscript.py
CLsimulator(CLscript,["-option1",arg1,"-flag1","-option2",arg2])
【问题讨论】:
-
“创建多个 python 线程,就像使用 subprocess.call() 一样” -
subprocess模块与线程无关。 -
其实我也不是很清楚你想做什么,能不能说的详细点或者举个例子?
-
“类似于传递带有选项、标志和参数的字符串列表”-
subprocess.call()的第一个参数是字符串列表。 -
我编辑了我的问题以使其更清晰
-
@ElmoVanKielmo 查看我的编辑,了解为什么我尽量不使用 subprocess.call()
标签: python command-line command-line-arguments