能够在CLI外运行的Python脚本不接受命令行参数

时间:2016-01-17 01:06:14

标签: python windows python-2.7 argparse

在Windows 7中,如果python(2.7.10)脚本已与Python解释器关联,并且扩展已在PATHEXT(窗口)列表中注册,那么当您启动脚本时,可以只键入:

MyPythonScript

而不是传统的:

python MyPythonScript.py 

哪个好 - 但不再(显示)接受命令行参数。例如,请考虑以下两个带有命令行参数的脚本示例。首先是传统方式:

>>>> python echo_input.py --help

usage: echo_input.py [-h] [-s SIMPLE_VALUE] [-c] [-t] [-f] [-a COLLECTION]
                     [-A] [-B] [--version]

optional arguments:
  -h, --help       show this help message and exit
  -s SIMPLE_VALUE  Store a simple value
  -c               Store a constant value
  -t               Set a switch to true
  -f               Set a switch to false
  -a COLLECTION    Add repeated values to a list
  -A               Add different values to list
  -B               Add different values to list
  --version        show program's version number and exit

工作得很好,但如果调用替代方式:

echo_input --help

simple_value     = None
constant_value   = None
boolean_switch   = False
collection       = []
const_collection = []

似乎不再识别命令行参数。仅供参考:以上脚本(默认情况下)打印出这5行,如果它运行了任何参数,如下所示:

>python echo_input.py

simple_value     = None
constant_value   = None
boolean_switch   = False
collection       = []
const_collection = []

因此,似乎失去了获取命令行参数的能力,例如一个简单的标志帮助。

对于这个问题的答案和解决方法我都很困惑,非常感谢任何建议或经验。

提前感谢您的时间......: - )

灵感来源:

Registering Python Scripts to run on Windows

Python FAQ2:

1 个答案:

答案 0 :(得分:2)

这是否有效(感谢@eryksun提供建议的修复程序 - 我没有Windows机器了吗?)

C:\>ftype Python.File="C:\Python27\python.exe" "%1" %*
C:\>assoc .py=Python.File

这会在HKLM\SOFTWARE\Classes中添加/修改ProgId。根据当前配置,您可能还必须在资源管理器的“打开方式”对话框中选择此ProgId(Python.File)。