[英]Python program with arguments on Windows
如何在安裝了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
給出錯誤“無效語法”。
我嘗試在命令行上運行腳本,它可以完美運行:
$ 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,然后在命令提示符下輸入命令。
這只是我天真,但考慮到您發布的簡短錯誤消息...
您是否有機會從本書中獲得此代碼並嘗試在命令行上運行它?
本書使用$
標記命令行/終端命令,但實際上該字符不是您應使用的語法或命令的一部分。
因此,而不是運行此:
$ python 1 2 3
運行這個:
python 1 2 3
您的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 commmand)中鍵入此內容。 在正確的上下文中,含義是:
但是,如果您已經在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$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.