我已经看到多个关于传递字符串的文章,但是在读取从批处理文件传递给python脚本的字符串时找不到很好的解决方案。这是我的问题。
我正在从批处理文件中调用python脚本并传递参数。
string_var = "123_Asdf"
bat 'testscript.py %string_var%'
我的python代码中有以下内容。
import sys
passed_var = sys.argv[1]
运行上面的代码时,我总是看到以下错误。
passed_var = sys.argv[1]
IndexError: list index out of range
以前有没有人看过这个问题?我只是传递字符串,并希望将其作为传递给脚本的第一个参数的一部分来读取。
答案 0 :(得分:0)
尝试一下:
import sys
for x,parameter in enumerate(sys.argv):
print(x, parameter)
答案 1 :(得分:0)
如果我已正确阅读您的问题及其格式,我认为您的.bat
文件应显示为:
Set string_var="123_Asdf"
"D:\BuildTools\tools\python27\python.exe" testscript.py %string_var%
或更妙的是:
Set "string_var=123_Asdf"
"D:\BuildTools\tools\python27\python.exe" testscript.py "%string_var%"
%string_var%
可以在带有或不带有双引号的地方传递。
答案 2 :(得分:0)
您的批处理文件应该更简单一些,请确保正确设置了PATH,否则将无法正常工作。
python testscript.py [argument]