我正在学习在我的代码中包含命令行参数。 我已经阅读了argparse
的文档,并试着从这里运行这个脚本。
#argparse_trial.py import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') args = parser.parse_args() print(args.accumulate(args.integers))
如果我跑
>python argparse_trial.py 1
在命令行中,我得到了预期的结果1
但是,如果我跑
>argparse_trial.py 1
我明白了
usage: arg_parse_trial.py [-h] [--sum] N [N ...] argparse_trial.py: error: the following arguments are required: N
我检查了代码似乎在第二种情况下收到的唯一的参数是文件名本身,不pipe有多less个参数。
我在Windows机器上,Python是在我的path。
为什么第二种情况在这个脚本中失败? 我怎样才能使它工作?
这是一个猜测,我现在不能测试,但我相信这是发生了什么事情:
start
)打开文件。 想想当你运行一个文本文件时会发生什么。
如果命令行没有正确生成,运行这个命令应该修复它(根据需要替换路径):
ftype Python.File=C:\Path\to\python.exe "%1" %*
注意最后的%*
。 如果不对,参数将被丢弃。
我认为代码工作正常。 您可以通过选择默认的程序python.exe
python文件执行该程序。
在你的情况python.exe "1" %*
作为@spectras建议,所以它将能够采取命令行参数。
还提供路径环境变量。
像pip,virtualenv and youtube-dl
这样的程序都是可执行文件,如果已经设置了环境变量,我们就可以在任何地方使用它。
如何在Windows上选择默认程序:
http://windows.microsoft.com/en-in/windows/change-default-programs#1TC=windows-7
您可以使用Python中包含的sys库,并使用argv()函数来执行各种命令参数。
找到这个视频教程直观的了解如何!
这是除了观众和Bhansa的回答。
对于Windows 10用户,设置高级文件关联有点复杂。 您将不得不编辑您的注册表文件。 运行regedit
。
转到HKEY_CURRENT_USER\SOFTWARE\Classes\py_auto_file\shell\open\command
并将Data
的值从
"C:\Path\To\Python\python.exe" "1"
至
"C:\Path\To\Python\python.exe" "1" %*
这也可能适用于以前的Windows版本。