【问题标题】:Python command line arguments ignored for standard user (Win 7)标准用户忽略 Python 命令行参数(Win 7)
【发布时间】:2012-04-03 12:59:46
【问题描述】:

我正在尝试从 Windows 7 的命令行运行 Python 脚本,但解释器似乎忽略了所有命令行参数。当我运行命令时它不会这样做

python C:\PathToScript\script.py arg1

或者当我以管理员权限启动终端时。在我不得不重新安装 Python (2.7.2) 之前,它曾经正常工作,所以我可能已经设法为标准用户打破了一些文件关联。 Python Command Line Arguments (Windows) 中的解决方案对我不起作用,因为注册表项已经用 %* 设置:

Key Name:          HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
Class Name:        <NO CLASS>
Last Write Time:   3/04/2012 - 14:19
Value 0
  Name:            <NO NAME>
  Type:            REG_SZ
  Data:            "C:\Python27\python.exe" "%1"  %*

这不是一个大问题,但我已经习惯了在目录中按住 shift+单击并打开终端,而现在我必须运行提升的 cmd 提示符,输入管理员帐户名和密码并导航到正确的文件夹,以便正确运行脚本。有谁知道我在哪里可以找到这个用户特定的文件关联,或者是否有其他方法可以解决这个问题?

【问题讨论】:

  • 您可以发布HKCR\Applications\python.exe 的注册表转储吗?另外,这是系统范围的安装还是用户本地的?也许一个用户特定的注册表项正在影响系统范围的配置。
  • 当然,这是注册表转储:pastebin.com/f64UHjE7。这是一个系统范围的安装(两个安装都是系统范围的)。
  • 您安装的是 64 位吗?注册表在这些系统上是重复的,一个用于 64 位进程,一个用于 WOW64(32 位)。 Explorer 是 64 位的,可能您编辑了错误的条目。您是如何开始注册的?
  • 我使用 Start->Run->"regedit" 启动 regedit,它应该同时显示 32 位和 64 位密钥。当我使用 Start->Run->"%systemroot%\syswow64\regedit" 启动 32 位注册表编辑器时,该值似乎仍然正确:pastebin.com/Ak2fbpUa。我不知道它是否有帮助,但这里是 Python 的 64 位注册表编辑器中 32 位节点的注册表转储:pastebin.com/Es2Eyxnw
  • 你有没有解决这个问题.. 我也有同样的问题。

标签: python windows command-line-interface


【解决方案1】:

我假设您正在从某种快捷方式运行脚本,因为不涉及控制台。 是不是快捷方式确实有参数,而它没有,您应该只在快捷方式的属性的“程序”部分中重新提供参数。

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2019-11-26
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多