sys.argv无法处理具有先前.py关联的系统

时间:2014-03-10 16:54:38

标签: python windows command-line-arguments sys

有点背景。我在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文件已与另一个程序关联的地方..所以我知道代码可以工作。

2 个答案:

答案 0 :(得分:1)

您需要告诉Windows您要将参数传递给python。打开命令提示符,然后执行以下操作:

assoc .py=PythonFile
ftype PythonFile=python.exe %1 %*

答案 1 :(得分:0)

只想分享我修复了这个问题。显然,预先关联.py文件会在安装过程中破坏Windows路径的设置。在我的主机上我不需要调整它,但我现在已经在所有机器上添加;c:\python27;c:\python27\scripts到环境变量。现在它工作正常