我已经看到多个关于传递字符串的帖子,但是无法在读取从批处理文件传递给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
有没有人见过这个问题?我只传递字符串并期望它作为我传递给脚本的第一个参数的一部分被读取。
试试这个:
import sys
for x,parameter in enumerate(sys.argv):
print(x, parameter)
如果我已正确阅读您的问题及其格式,我认为您的.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%
可以带或不带双引号。
您的批处理文件应该更简单一点,确保正确设置PATH,否则这将无效。
python testscript.py [argument]