从批处理文件将参数传递给python脚本

时间:2019-03-08 08:30:33

标签: python windows python-2.7 batch-file python-3.6

我想将参数从test.bat传递到myscript.py

test.bat

../path/to/file/myscript.py "myarg1" "myarg2"

myscript.py

#!/usr/bin/env python2

import sys

if __name__ == '__main__':

    print sys.version()
    myarg1= sys.argv[1]
    myarg2= sys.argv[2]

我正在使用Windows 10并将pylauncher配置为执行python文件的默认程序。我的用户变量和系统PATH变量中都有python 2.7和3.6。 shebang会得到照顾,并按预期选择py2.7解释器。

我面临的错误是未传递参数。错误日志如下:

2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)]
Traceback (most recent call last):
File "C:\full\path\to\file\myscript.py", line 12, in <module>
myarg1= sys.argv[1]
IndexError: list index out of range

一种解决方案: 当我在.bat文件中指定py时,它可以工作并且可以正确读取参数

py ../path/to/file/myscript.py "myarg1" "myarg2"

如何在不向我的.bat脚本中添加py的情况下完成这项工作?

更多信息-在cmd shell中运行它们:

assoc .py给出.py=Python.File

ftype Python.File给出Python.File="C:\WINDOWS\py.exe" "%L" %*

1 个答案:

答案 0 :(得分:0)

必须在文件名末尾具有.py才能起作用。 您的test.bat文件应如下所示:

python myscript.py [arg1] [arg2]

如果myscript.py文件不在同一目录中,则将路径放入myscript.py 结束 myscript.py。