如何在 python 子进程中传递参数?

问题描述 投票:0回答:3

我想创建一个使用

subprocess.run()

在 python 中执行以下命令的方法

python3 detect_wrong.py --source overpass.mp4 --weights ./my_coco.pt --data ./data/my_coco.yaml

subprocess.run(["python","detect_wrong.py"])

卡在这一步了。我想知道如何传递这些论点。

python python-3.x subprocess command parameter-passing
3个回答
0
投票

如此处所述:https://docs.python.org/3/library/subprocess.html,您可以在数组中添加通常在命令行中传递的每个参数。

例如,如果你想运行

ls -l --color=auto
,你可以写:

subprocess.run(["ls", "-l", "--color=auto"])

在这里,那就是:

subprocess.run(["python3", "detect_wrong.py", "--source", "overpass.mp4", "--weights", "./my_coco.pt", "--data", "./data/my_coco.yaml"])

但是,既然你想从 Python 运行 Python 脚本,我建议你看这里:我怎样才能让一个 python 文件运行另一个? . 否则,您可以使用 detect_wrong.py

 运行它,或者,如果绝望,使用 
exec()
os.system()

    

你可以简单地将参数作为列表中的实体传递,就像这样:

0
投票
subprocess.run()

要使用Python中的

0
投票
模块执行命令

python3 detect_wrong.py --source overpass.mp4 --weights ./my_coco.pt --data ./data/my_coco.yaml

,可以修改之前的示例代码如下:
subprocess

在此代码中,命令被指定为一个列表,其中每个元素代表命令的一部分及其参数。第一个元素是
import subprocess

command = ['python3', 'detect_wrong.py', '--source', 'overpass.mp4', '--weights', './my_coco.pt', '--data', './data/my_coco.yaml']
subprocess.run(command)
指定 Python 解释器,然后是

'python3'

 表示脚本名称,然后是命令行参数和
'detect_wrong.py'
.
确保根据您的具体用例调整命令和参数,包括所用文件的正确路径。

只需在 subprocess.run 列表中附加参数
--source
© www.soinside.com 2019 - 2024. All rights reserved.