如何在安装了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 test.py 1 2 3 4 --sum
给出错误"语法无效"。
答案 0 :(得分:3)
我尝试在命令行运行您的脚本,它运行正常:
$ python arg.py 1 2 3 4 --sum
10
在上面,$
是shell的提示符。我输入的内容是python arg.py 1 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
这会生成您看到的SyntaxError: invalid syntax
错误。 (有一个小的区别:我在Linux上,你在Windows上。)
解决方案是退出python交互式shell并在命令提示符下输入命令。
答案 1 :(得分:0)
这只是我的天真,但考虑到你发布的短消息...
您是否有机会从某本书中获取此代码并尝试在命令行上运行此代码?
本书使用$
标记命令行/终端命令,但该字符实际上不是您应该使用的语法或命令的一部分。
所以不要运行它:
$ python 1 2 3
运行:
python 1 2 3
答案 2 :(得分:0)
您的test
脚本是Python argparse文档中的第一个示例。 https://docs.python.org/3/library/argparse.html
您添加新行的评论是
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
来自parser
的用法消息; test
是脚本的名称。
我不确定RESTART
行。我的测试(最后)表明你的Python调用(或一些默认环境特性)包含-i
选项,即使在argparse
步骤失败之后,它也会进入交互式Python会话。
下一个命令直接来自Python示例:
>>> $ python test.py 1 2 3 4
SyntaxError: invalid syntax
但背景完全没错。文档包括$
,表示这是在命令行中键入的(Linux shell或Windows命令)。在正确的背景下,意义是:
但是如果你已经在Python解释器中(由>>>
提示字符串表示),这没有意义。 python
和test.py
是Python中没有默认含义的字符串。所以解释器会给你一个语法错误。并没有任何变化解决这个问题。
再往前一点,argparse
文档给出了一个在Python交互式会话中调用parser
的示例:
>>> 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
我的测试和你的测试之间的主要区别在于我没有得到RESTART
而且我得到了追溯。如果没有-i
,我只需获取使用消息并返回命令行。
1000:~/mypy$ python simple.py
usage: simple.py [-h] foo
simple.py: error: too few arguments
1000:~/mypy$