簡體   English   中英

Windows上帶有參數的Python程序

[英]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
  • 告訴它運行test.py腳本
  • 並將參數“ 1”,“ 2”等傳遞給它

但是,如果您已經在Python解釋器中(由>>>提示字符串指示),則沒有任何意義。 pythontest.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM