gpt4 book ai didi

python - Windows 上的 check_call 和命令行参数

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:03 28 4
gpt4 key购买 nike

我的 python 程序正在使用 check_call 调用 Windows 上的脚本:

import subprocess

subprocess.check_call(['my_script.bat', 'foo=bar'])

我希望 my_script.bat 接收单个命令行参数 (foo=bar),但实际上接收的是两个 (foo 和酒吧)。换句话说,等号似乎被转换为空格。在 Linux 上一切都按预期运行。

在 Windows 上格式化此字符串以使 my_script 看到包含等号的单个参数的正确方法是什么?

my_script.bat:

echo %1

在我的实际应用程序中,my_script.batscons.bat

最佳答案

这个案例在 Windows 7 下使用 python2.7 对我来说测试得很好

my_script.py

import sys
print sys.argv

python shell

>>> import subprocess
>>> subprocess.check_call('python', 'my_script.py', 'arg1', 'foo=bar')
['myscript.py', 'arg1', 'foo=bar']
0

您可能想验证您的“my_script”如何处理传入的参数。

更新

由于您已更新您的问题以反射(reflect)您专门使用 Windows 批处理文件,因此解决方案如下:http://geoffair.net/ms/batch.htm

Note: If a semicolon, ';' or an equal sign (=) is used as a command line argument to a batch file, it is treated as a blank space. For example, in the following test.bat batch file -

等号是一个特殊字符,将被空格替换。需要加引号:

subprocess.check_call(['my_script.bat', '"foo=bar"'])

关于python - Windows 上的 check_call 和命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419868/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com