【发布时间】:2011-02-08 02:49:20
【问题描述】:
如果我尝试将命令行参数作为 Windows 命令 shell 中的可执行命令直接执行,我将无法获取传递给 Python 程序的命令行参数。例如,如果我有这个程序(test.py):
import sys
print "Args: %r" % sys.argv[1:]
并执行:
>test foo
Args: []
相比:
>python test.py foo
Args: ['foo']
我的配置有:
PATH=...;C:\python25;...
PATHEXT=...;.PY;....
>assoc .py
.py=Python.File
>ftype | grep Python
Python.CompiledFile="C:\Python25\python.exe" "%1" %*
Python.File="C:\Python25\python.exe" "%1" %*
Python.NoConFile="C:\Python25\pythonw.exe" "%1" %*
【问题讨论】:
-
但是它对我有用。 C:\Documents and Settings\Quim>test foo Args: ['foo'] 我将 test.py 放在 cmd.exe 的初始位置(属性中的 %HOMEDRIVE%%HOMEPATH%)。其余的我的设置没有什么特别的:winxp,Activepython 2.6.5
-
哇,多么令人沮丧的错误 :( 我刚刚重新安装了 Python,但它仍然坏掉了!两年前 Python 问题跟踪器报告了该错误 bugs.python.org/issue7936 但没有修复 - 很少有开发人员使用 Windows .
-
在我安装 python 3.4 并尝试使用 python 2.7 时遇到了这个问题。看起来 python 3.4 安装程序搞砸了?
-
如果系统使用
[HKCU|HKLM]\SOFTWARE\Classes\Applications\python.exe或[HKCU|HKLM\SOFTWARE\Classes\py_auto_file,则说明配置错误,应删除有问题的键。然后使用资源管理器(“打开方式”或文件关联设置应用程序)选择使用标准[HKCU|HKLM]\SOFTWARE\Classes\Python.FileProgId 的正确“Python”条目。检查 regedit 中的shell\open\command子键。如果安装了 Python 3,则命令模板应使用 py 启动器。如果为所有用户安装了启动器,则模板应为"C:\Windows\py.exe" "%1" %*。 -
cmd 的内部
assoc和ftype命令仅显示和修改HKLM\SOFTWARE\Classes,因此它们需要管理员权限才能写入注册表,如果 Python 是,它们不是正确的工具为当前用户安装。您必须使用 regedit 修改HKCU\SOFTWARE\Classes中的每个用户设置,这优先于HKLM设置。此外,与 ProgId 的关联应始终通过 Explorer 管理,而不是使用assoc。 Explorer 将用户的选择存储在HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts。
标签: python windows registry command-line-arguments file-association