sys.argv在之前有.py关联的系统上不起作用

1 投票
2 回答
1215 浏览
提问于 2025-04-17 21:40

先简单介绍一下背景。我在一家特效工作室工作,以前我们只用记事本或者Notepad++修改过其他程序的.py文件,但其实没有人真正使用过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 个回答

1

你需要告诉Windows你想要给Python传递一些参数。打开命令提示符,然后执行以下操作:

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

我想分享一下我解决问题的经验。原来在安装的时候,如果提前关联一个 .py 文件,会导致 Windows 的路径设置出问题。在我的主电脑上我不需要调整这个设置,但现在我在所有电脑上都加上了 ;c:\python27;c:\python27\scripts 到环境变量里。现在一切都正常了。

撰写回答