提问人:AaqilSh 提问时间:5/16/2023 最后编辑:Hai VuAaqilSh 更新时间:5/20/2023 访问量:574
如何在python子进程中传递参数?
How to pass arguments in python subprocess?
问:
我想创建一个方法,该方法在 python 中使用以下命令执行subprocess.run()
python3 detect_wrong.py --source overpass.mp4 --weights ./my_coco.pt --data ./data/my_coco.yaml
subprocess.run(["python","detect_wrong.py"])
我被困在这一步。我想知道如何传递这些参数。
答:
如下所述: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 文件运行另一个? 并且,如上所述,如果可能的话,将其视为一个模块。
否则,你可以用 or 运行它,如果绝望的话,用 ordetect_wrong.py
exec()
os.system()
subprocess.run()
您可以简单地将参数作为列表中的实体传递,如下所示:
subprocess.run(["python", "--argument=value", "detect_wrong.py"]
要使用 Python 中的模块执行命令,您可以修改前面的示例代码,如下所示: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'
--source
overpass.mp4
--weights
./my_coco.pt
--data
./data/my_coco.yaml
确保根据您的特定用例调整命令和参数,包括所用文件的正确路径。
评论
只需在 subprocess.run 列表中附加参数即可
subprocess.run(["python","detect_wrong.py","--source=overpass.mp4", "--weights=./my_coco.pt", "--data=./data/my_coco.yaml"])
评论
detect_wrong.py
是 的参数,所以你已经在这样做了。python