启用以在不使用 CLI 的情况下运行的 Python 脚本不采用命令行参数
Posted
技术标签:
【中文标题】启用以在不使用 CLI 的情况下运行的 Python 脚本不采用命令行参数【英文标题】:Python scripts enabled to run w/out the CLI do not take command line arguments 【发布时间】:2016-04-22 09:35:16 【问题描述】:在 Windows 7 中,如果 python (2.7.10) 脚本已与 Python 解释器关联,并且扩展已在 PATHEXT (windows) 列表中注册,那么当您启动脚本时,只需键入:
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
工作正常,但如果调用 alternative 方式:
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:
【问题讨论】:
这不是 argparse 问题。这是sys.argv
中的内容的问题。
【参考方案1】:
这行得通吗(感谢@eryksun 提出的修复建议——我已经没有 Windows 机器了)?
C:\>ftype Python.File="C:\Python27\python.exe" "%1" %*
C:\>assoc .py=Python.File
这将添加/修改HKLM\SOFTWARE\Classes
中的 ProgId。根据当前配置,您可能还必须在 Explorer 的“打开方式”对话框中选择此 ProgId (Python.File
)。
【讨论】:
以上是关于启用以在不使用 CLI 的情况下运行的 Python 脚本不采用命令行参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Vue CLI 的情况下覆盖 Vuetify 2 变量
Visual C++/Cli 中的异步睡眠,如何在不使 GUI 停止的情况下创建一个 X 毫秒来调用函数
ECK(Kubernetes 上的弹性云)在不使用 kubectl delete 的情况下重启容器
如何在不使用 numpy 的情况下计算 python 中的标准偏差?