我想将参数从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" %*
答案 0 :(得分:0)
您将必须在文件名末尾具有.py才能起作用。 您的test.bat文件应如下所示:
python myscript.py [arg1] [arg2]
如果myscript.py文件不在同一目录中,则将路径放入myscript.py 结束 myscript.py。