无法在 Windows 命令行上将零参数传递给 Python 程序 运行
Can't pass zero arguments to Python program running on Windows command line
当我运行下面的文件直接通过命令行
# winargs.py
import sys
print(sys.argv)
通过将该文件放在 PATH
中的目录中并 运行 在 Window 命令提示符或 Powershell 中使用命令 winargs.py
,我得到了一个意外的尾随空字符串.
['winargs.py', '']
我希望它只输出脚本名称,如下所示:
['winargs.py']
Windows配置
我以前根本无法传递参数,但我按照 the instructions here 将 "%*"
添加到 HKEY_CLASSES_ROOT\Python.File\shell\open\command
注册表项,现在我可以传递参数 运行ning winargs.py a b 1 2
输出 ['winargs.py', 'a', 'b', '1', '2']
。我正在为 Windows 使用 Python 的 Anaconda 发行版,并将 Python 设置为 运行 宁 *.py
文件的默认程序。我设置默认后修改的注册表项是
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
"C:\Users\Me\Anaconda3\python.exe" "%1" "%*"
argparse
问题更大
当运行使用仅需要位置参数的argparse
编写的脚本时,这会造成更大的困难。它没有打印帮助消息,而是将该空字符串解释为第一个位置参数。例如,对于程序
# winargparse.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("first_arg")
parser.parse_args()
我从命令提示符和 PowerShell 中看到没有输出 运行ning 命令 winargparse.py
,但希望它打印默认的 argparse
帮助消息,就像我 运行 python winargparse.py
看起来像
usage: winargparse.py [-h] first_arg
winargparse.py: error: the following arguments are required: first_arg
如何让 Windows 命令提示符进入 运行 我的 Python 文件既不带参数又带参数?
您的注册表记录中 %*
周围有不需要的双引号。如果没有参数,它们使 Windows 传递一个空参数。只需删除这些引号。
当我运行下面的文件直接通过命令行
# winargs.py
import sys
print(sys.argv)
通过将该文件放在 PATH
中的目录中并 运行 在 Window 命令提示符或 Powershell 中使用命令 winargs.py
,我得到了一个意外的尾随空字符串.
['winargs.py', '']
我希望它只输出脚本名称,如下所示:
['winargs.py']
Windows配置
我以前根本无法传递参数,但我按照 the instructions here 将 "%*"
添加到 HKEY_CLASSES_ROOT\Python.File\shell\open\command
注册表项,现在我可以传递参数 运行ning winargs.py a b 1 2
输出 ['winargs.py', 'a', 'b', '1', '2']
。我正在为 Windows 使用 Python 的 Anaconda 发行版,并将 Python 设置为 运行 宁 *.py
文件的默认程序。我设置默认后修改的注册表项是
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
"C:\Users\Me\Anaconda3\python.exe" "%1" "%*"
argparse
问题更大
当运行使用仅需要位置参数的argparse
编写的脚本时,这会造成更大的困难。它没有打印帮助消息,而是将该空字符串解释为第一个位置参数。例如,对于程序
# winargparse.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("first_arg")
parser.parse_args()
我从命令提示符和 PowerShell 中看到没有输出 运行ning 命令 winargparse.py
,但希望它打印默认的 argparse
帮助消息,就像我 运行 python winargparse.py
看起来像
usage: winargparse.py [-h] first_arg
winargparse.py: error: the following arguments are required: first_arg
如何让 Windows 命令提示符进入 运行 我的 Python 文件既不带参数又带参数?
您的注册表记录中 %*
周围有不需要的双引号。如果没有参数,它们使 Windows 传递一个空参数。只需删除这些引号。