Windows上带参数的Python程序

Windows上带参数的Python程序,python,argparse,Python,Argparse,如何在安装了python 2.7的Windows XP上运行保存在文件test.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_

如何在安装了python 2.7的Windows XP上运行保存在文件test.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 test.py 1 2 3 4


给出错误“无效语法”。

这只是我太天真了,但考虑到您发布的简短错误消息

你有没有可能从某本书上得到这段代码,并尝试在命令行上运行它

本书使用
$
标记命令行/终端命令,但字符实际上不是您应该使用的语法或命令的一部分

因此,与其运行这个:

$ python 1 2 3
运行以下命令:

python 1 2 3

这只是我的天真,但考虑到你发布的短错误消息

你有没有可能从某本书上得到这段代码,并尝试在命令行上运行它

本书使用
$
标记命令行/终端命令,但字符实际上不是您应该使用的语法或命令的一部分

因此,与其运行这个:

$ python 1 2 3
运行以下命令:

python 1 2 3

我尝试在命令行中运行您的脚本,效果非常好:

$ python arg.py 1 2 3 4 --sum
10
在上面的示例中,
$
是shell的提示符。我输入的是
python arg.py1 2 3 4--sum
。它起作用了

现在,让我们做我怀疑您正在做的事情:让我们启动一个交互式python shell并输入上面的内容:

$ python
Python 2.7.12+ (default, Aug  4 2016, 20:04:34) 
[GCC 6.1.1 20160724] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> python test.py 1 2 3 4 --sum 
  File "<stdin>", line 1
    python test.py 1 2 3 4 --sum 
              ^
SyntaxError: invalid syntax
$python
Python 2.7.12+(默认,2016年8月4日,20:04:34)
[GCC 6.1.1 20160724]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>python test.py1 2 3 4——总和
文件“”,第1行
python test.py1 2 3 4——总和
^
SyntaxError:无效语法
这将生成您看到的
SyntaxError:invalid syntax
错误。(有一个小区别:我在Linux上,你在Windows上。)


解决方案是退出python交互式shell,并在命令提示符下输入命令。

我尝试在命令行中运行您的脚本,效果非常好:

$ python arg.py 1 2 3 4 --sum
10
在上面的示例中,
$
是shell的提示符。我输入的是
python arg.py1 2 3 4--sum
。它起作用了

现在,让我们做我怀疑您正在做的事情:让我们启动一个交互式python shell并输入上面的内容:

$ python
Python 2.7.12+ (default, Aug  4 2016, 20:04:34) 
[GCC 6.1.1 20160724] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> python test.py 1 2 3 4 --sum 
  File "<stdin>", line 1
    python test.py 1 2 3 4 --sum 
              ^
SyntaxError: invalid syntax
$python
Python 2.7.12+(默认,2016年8月4日,20:04:34)
[GCC 6.1.1 20160724]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>python test.py1 2 3 4——总和
文件“”,第1行
python test.py1 2 3 4——总和
^
SyntaxError:无效语法
这将生成您看到的
SyntaxError:invalid syntax
错误。(有一个小区别:我在Linux上,你在Windows上。)


解决方案是退出python交互式shell并在命令提示符下输入命令。

您的
test
脚本是python argparse文档中的第一个示例

添加了新行的评论已被删除

Python 2.7.8 (default, Jun 30 2014, 16:03:49) 
[MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> usage: test [-h] [--sum] N [N ...] test: error: too few arguments 
>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 
>>> python test.py 1 2 3 4 
SyntaxError: invalid syntax 
>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 
>>> python test.py 1 2 3 4 --sum 
SyntaxError: invalid syntax 
>>> python test.py 1 2 3 4 --sum
由此我推断,您将脚本保存为
test
('test.py`会更好),并从Windows命令行运行它,如下所示:

python -i test
产生

usage: test [-h] [--sum] N [N ...] test: error: too few arguments
来自
解析器的用法消息<代码>测试
是脚本的名称

我不确定
重新启动
行。我的测试(最后)表明,您的Python调用(或某些默认环境功能)包括
-i
选项,即使在
argparse
步骤失败后,它仍让您处于交互式Python会话中

下一个命令直接来自Python示例:

>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 
但背景是完全错误的。文档包括
$
,以指示这是在命令行(Linux shell或Windows commmand)中键入的。在正确的上下文中,其含义是:

  • 运行Python
  • 告诉它运行test.py脚本
  • 并将参数“1”、“2”等传递给它
但是,如果您已经在Python解释器中(由
>
提示字符串指示),这就没有意义了
python
test.py
是python中没有默认含义的字符串。所以解释器会给你一个语法错误。没有一种变体能解决这个问题

再往前看,
argparse
文档给出了从Python交互式会话中调用
解析器的示例:

>>> parser.parse_args(['--sum', '7', '-1', '42'])
这有一个非常不同的语法。在这个
python-i
上下文中,它应该运行

返回Windows命令窗口并键入

python test 1 2 3 4
有更好的工作机会。如果这不起作用,那么您/我们需要专注于运行更基本的Python脚本

=========

下面是一个从Linux shell运行另一个简单脚本的示例。
…$
是shell提示符;
>
是python提示符。将
-i
添加到初始python调用中可确保解析后它仍保留在python中

0957:~/mypy$ python -i simple.py
usage: simple.py [-h] foo
simple.py: error: too few arguments
Traceback (most recent call last):
  File "simple.py", line 4, in <module>
    print(parser.parse_args())
   ...
SystemExit: 2
>>> python simple.py 1 2
  File "<stdin>", line 1
    python simple.py 1 2
                ^
SyntaxError: invalid syntax

您的
test
脚本是Python argparse文档中的第一个示例

添加了新行的评论已被删除

Python 2.7.8 (default, Jun 30 2014, 16:03:49) 
[MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> usage: test [-h] [--sum] N [N ...] test: error: too few arguments 
>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 
>>> python test.py 1 2 3 4 
SyntaxError: invalid syntax 
>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 
>>> python test.py 1 2 3 4 --sum 
SyntaxError: invalid syntax 
>>> python test.py 1 2 3 4 --sum
由此我推断,您将脚本保存为
test
('test.py`会更好),并从Windows命令行运行它,如下所示:

python -i test
产生

usage: test [-h] [--sum] N [N ...] test: error: too few arguments
来自
解析器的用法消息<代码>测试
是脚本的名称

我不确定
重新启动
行。我的测试(最后)表明,您的Python调用(或某些默认环境功能)包括
-i
选项,即使在
argparse
步骤失败后,它仍让您处于交互式Python会话中

下一个命令直接来自Python示例:

>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 
但背景是完全错误的。文档包括
$
,以指示这是在命令行(Linux shell或Windows commmand)中键入的。在正确的上下文中,其含义是:

  • 运行Python
  • 让它运行