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

标签 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"

如何在不将 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/

相关文章:

python - Pyomo 卡住解算器

python - 使用 SQLAlchemy 删除和读取索引

c++ - Boost 文件系统总是在 Windows 上返回 false

windows - windows中ffmpeg的av_read_frame总是返回packet.stream_index为0

python - 嵌套列表上的 min/max 函数如何工作?

python - python : PackagesNotFoundError error when trying to roll back revision

python - 如何使用 Ctrl+C 优雅地关闭协程?

c - 如何从 Windows 程序访问类似 netstat 的以太网统计信息

python - 在 GNU/Linux 上手动构建 python 2.7.10 加载从包安装的旧 python2.7.6 的 .so

python - 从另一个列表中删除列表列表