【问题标题】:Run Python scripts from Windows command line, argument not passed从 Windows 命令行运行 Python 脚本,参数未传递
【发布时间】:2011-12-13 05:40:55
【问题描述】:

我有一堆用 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 没有帮助。我想知道我能做些什么来解决这个问题??

我已经变得非常依赖我多年来构建的脚本。当他们打破时,我感到非常不利:(

【问题讨论】:

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


【解决方案1】:

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

这一切都在这篇优秀的文章中有所描述:

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

【讨论】:

    【解决方案2】:

    将答案移至 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/

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 2020-05-18
      • 1970-01-01
      相关资源
      最近更新 更多