在Windows上直接运行python文件时删除了命令行参数

时间:2016-06-09 05:00:39

标签: python windows command-line-arguments

我正在学习在我的代码中包含命令行参数。我已经阅读了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就在我的路上。

为什么第二种情况在此脚本中失败?我怎样才能让它发挥作用?

4 个答案:

答案 0 :(得分:1)

这是一个猜测,我现在无法测试,但我相信这就是发生的事情:

  1. 键入python文件的名称。
  2. Windows无法将该文件作为程序运行,因此......
  3. Windows尝试使用关联的程序打开文件(使用start)。
  4. 这样做时,它只是忽略了线上的其他东西,而且......
  5. ...为python生成一个基本命令行 翻译使用,只有翻译本身和 要打开的目标文件。
  6. 想想当你“运行”一个文本文档时会发生什么。

    如果未正确生成命令行,则运行此命令应修复它(根据需要替换路径):

    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。

找到这个直观的视频教程,了解如何!

https://www.youtube.com/watch?v=rLG7Tz6db0w

答案 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。