我的python程序使用check_call
在Windows上调用脚本:
import subprocess
subprocess.check_call(['my_script.bat', 'foo=bar'])
我希望my_script.bat
收到一个命令行参数(foo=bar
),而是接收两个(foo
和bar
)。换句话说,似乎等号正在转换为空格。一切都在Linux上按预期工作。
在Windows上格式化此字符串的正确方法是什么,my_script
看到包含等号的单个参数?
my_script.bat
:
echo %1
在我的实际应用中,my_script.bat
为scons.bat
。
答案 0 :(得分:1)
这个案例在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
您可能想要验证您的&#34; my_script&#34;正在处理传入的参数。
<强>更新强>
由于您已更新问题以反映您专门使用Windows批处理文件,因此以下是解决方案:http://geoffair.net/ms/batch.htm
注意:如果是分号,&#39 ;;&#39;或等号(=)用作命令 对于批处理文件的行参数,它被视为空格。对于 例如,在以下test.bat批处理文件中 -
等号是一个特殊字符,将被替换为空格。它需要引用:
subprocess.check_call(['my_script.bat', '"foo=bar"'])