我正在学习在我的代码中包含命令行参数。我已经阅读了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
我检查过,在第二种情况下,代码似乎唯一接受的参数是文件名本身,无论给出多少参数。
我在Windows机器上,而python就在我的路上。
为什么第二种情况在此脚本中失败?我怎样才能让它发挥作用?
答案 0 :(得分:1)
这是一个猜测,我现在无法测试,但我相信这就是发生的事情:
start
)。想想当你“运行”一个文本文档时会发生什么。
如果未正确生成命令行,则运行此命令应修复它(根据需要替换路径):
ftype Python.File=C:\Path\to\python.exe "%1" %*
注意最后的%*
。如果它不对,那么参数就会被删除。
答案 1 :(得分:1)
我认为代码工作正常。您只需为python文件选择默认程序python.exe
即可执行该程序。
在你的情况{@ 1}}中,@ spectras建议,所以它可以接受命令行参数。
还提供路径环境变量
像python.exe "1" %*
这样的程序都是可执行文件,如果已经设置了环境变量,我们可以在任何地方使用它。
如何在Windows上选择默认程序:
http://windows.microsoft.com/en-in/windows/change-default-programs#1TC=windows-7
答案 2 :(得分:0)
您可以使用python中包含的sys库并使用argv()函数执行各种命令argunment。
找到这个直观的视频教程,了解如何!
答案 3 :(得分:0)
这是除了#sraras'和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。