启用以在不使用 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 中的标准偏差?

是否可以在不打开浏览器的情况下从 CLI 在 GitHub 上创建远程存储库?

是否可以在不启动核心定位的情况下向用户询问当前位置