读取从批处理文件传递到python脚本的字符串参数

时间:2019-03-08 12:08:18

标签: python batch-file parameter-passing

我已经看到多个关于传递字符串的文章,但是在读取从批处理文件传递给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

以前有没有人看过这个问题?我只是传递字符串,并希望将其作为传递给脚本的第一个参数的一部分来读取。

3 个答案:

答案 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]