我想将参数从 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"
如何在不将 py
添加到我的 .bat 脚本中的情况下完成这项工作?
更多信息 - 在 cmd
shell 中运行这些:
assoc .py
给出 .py=Python.File
ftype Python.File
给出 Python.File="C:\WINDOWS\py.exe""%L"%*
最佳答案
您将必须在文件名末尾添加 .py 才能使其正常工作。 您的 test.bat 文件应如下所示:
python myscript.py [arg1] [arg2]
如果 myscript.py 文件不在同一目录中,则将路径放入 myscript.py ENDING IN myscript.py。
关于python - 将参数从批处理文件传递给 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55059347/