【发布时间】:2014-04-13 22:09:57
【问题描述】:
一点背景。我在一家 VFX 工作室工作,过去我们不得不为其他程序更改 .py 文件,只使用记事本或记事本++,但没有人真正使用过 python。
所以我现在一直在推出 python 自动化脚本,它们运行良好,除了一个问题。任何以前有与 python 以外的东西相关联的 python 脚本的机器都会失败。
使用参数调用脚本:
myScript.py <argument>
然后我使用:
print sys.argv
versionName = sys.argv[1]
这适用于所有从未将 python 文件与任何东西关联的机器,但是之前将 python 与另一个应用程序关联的机器会失败 它不会读取参数,我得到一个列表索引或范围错误。 打印行显示它也没有正确接收输入。
关于如何解决这个问题的任何想法?
编辑:脚本在运行时返回:
z:\pythonScripts>Make_version_1.py test
['Z:\\pythonscripts\\Make_Version_1.py']
Traceback (most recent call last):
File "Z:\PythonScripts\Make_version_1.py", line 20, in <module>
versionName = sys.argv[1]
IndexError: list Out of range
办公室中的大多数机器都不会返回此错误.. 只是在安装 python 2.7.6 之前 .py 文件与另一个程序相关联的机器,所以我知道代码有效。
【问题讨论】:
-
将文件与notepad++关联时如何使用?双击?那你怎么传参数呢?
-
很可能,有人手动设置了 .py 文件关联,而没有考虑命令行参数。如果你在这些机器上重新安装 python,它应该会为你解决问题。
-
Zhang - .py 文件以前与 notepad++ 相关联,不能作为脚本运行。 Nuke 使用 .py 文件通过它自己的内部 python 解释器将默认设置传递给程序。在我到达这里之前,他们只是用 notepad++ 编辑了 .py 文件。我按照正常使用 Markku 通过命令行向它们传递参数——它们上从来没有安装过 python。安装 Python 后,我手动将 .py 文件与 python 重新关联,它仍然无法正常工作
-
你是如何手动重新关联python的?在命令行上还是在注册表中?如果您使用命令行,您是否这样做:
assoc .py=PythonFile然后ftype PythonFile=python.exe %1 %*? -
我是通过 Windows 中的右键单击上下文菜单完成的。原来是“选择默认程序”。我只是那样重做了,我得到了同样的东西。脚本运行,但打印行只打印
sys.argv[0],然后当我尝试分配变量时,它给了我该行的回溯错误和错误“索引错误:列表索引超出范围”。重申一下,这个脚本在所有以前没有 .py 扩展名的机器上都能完美运行
标签: python windows command-line-arguments sys