从Windows命令行运行Python脚本,未传递参数

时间:2011-10-22 16:22:54

标签: python windows command-line command-line-arguments

我有一堆用Python编写的脚本。我从Windows命令提示符(如

)运行它们
c:> my_script.py arg1 arg2 arg3

多年前,这适用于每台计算机和每个Windows版本。刚才我的Windows 7系统崩溃了。该脚本已加载并执行。但是没有一个参数被传递到脚本中。

为了说明这一点,我有一个名为py_echo.py的脚本:

from pprint import pprint as pp
import sys

if __name__ =='__main__':
    pp(sys.argv)

然后我用参数a,b,c执行它。他们都没有通过。

c:\Python27\Lib\site-packages>py_echo.py a b c
['C:\\0\\usr\\bin\\py_echo.py']

如果我显式运行python.exe,则正确传递参数

c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c']

以前工作过。在我从PC上卸载了一堆旧版本的Python解释器和模块之后,它才开始崩溃。重新安装Python没有帮助。我想知道我该怎么做才能解决这个问题?

我已经非常依赖于我多年来建立的脚本。当他们休息时我感到非常残疾:(

2 个答案:

答案 0 :(得分:10)

我遇到了与Windows 7 / Python相同的问题,并且最终发现我必须设置正确的文件关联并通过regedit更新两个注册表项。

在这篇优秀的文章中都描述了这一点:

http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

答案 1 :(得分:4)

将答案移至SO(而不是Jon's answer中的链接):

修改以下两个注册表,以便将参数传递给Python:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

%*添加到现有"C:\PythonXX\python.exe" "%1",以便密钥现在显示为:"C:\PythonXX\python.exe" "%1" %*

来源:http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/