2016-08-28 2 views
0

python 2.7이 설치된 Windows XP의 test.py 파일에이 프로그램을 실행하는 방법.Windows에서 인수가있는 Python 프로그램

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 

오류 "잘못된 구문"을 제공합니다.

+1

정확하고 완전한 오류 메시지 1 : 1을 복사하는 방법은 어떻습니까? '$ '를 첫 글자로 사용해 보셨습니까? – Mario

+0

오류는 SyntaxError입니다 : 잘못된 구문 – mathsbeauty

+0

'code' Python 2.7.8 (기본, 2014 년 6 월 30 일, 16:03:49) win32의 [MSC v.1500 32 비트 (Intel)] 유형 "copyright", "credits "또는"license() "를 참조하십시오. >>> ================== 다시 시작 ============= =================== >>> 사용법 : test [-h] [--sum] N [N ...] 테스트 : 오류 : 너무 적음 인수 >>> $ python test.py 1 2 3 4 구문 오류 : 잘못된 구문 >>> python 테스트.PY 1 2 3 4 구문 에러 잘못된 구문 >>> $ 파이썬 test.py 1 개 2 3 4 구문 에러 잘못된 구문 >>> 파이썬 test.py 1 개 2 3 4 --sum 구문 에러 잘못된 구문 > >> python test.py 1 2 3 4 --sum – mathsbeauty

답변

0

이 그냥 나를 순진하지만 게시 된 짧은 오류 메시지가 고려 ...

당신이 어떤 책 떨어져이 코드를 얻고 명령 줄에서이 작업을 실행하려고하고 가능성은?

이 책은 명령 줄/터미널 명령을 표시하기 위해 $을 사용하지만 문자는 실제로 사용할 구문이나 명령의 일부가 아닙니다.

그래서 그 대신이 실행 :

$ python 1 2 3 

실행이 :

python 1 2 3 
+0

파이썬에서 여전히 같은 오류가 발생합니다. 1 2 3 또는 파이썬 테스트 123 – mathsbeauty

+0

@mathsbeauty'python --version'을 실행할 수 있습니까? – Mario

3

내가 명령 줄에서 스크립트를 실행 시도하고 완벽하게 작동합니다 다음에

$ python arg.py 1 2 3 4 --sum 
10 

위의 경우 $은 쉘의 프롬프트입니다. 입력 한 내용은 python arg.py 1 2 3 4 --sum입니다. 그것은 작동합니다. 의 대화 형 파이썬 쉘을 시작하고 위의를 입력 할 수 :

는 지금, 나는 당신이하고있는 것으로 의심되는 일을 할 수 있도록

$ 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 오류가 발생합니다. (하나의 사소한 차이점이 있습니다 : 나는 리눅스에 있고 당신은 Windows에 있습니다.)

해결 방법은 python 대화 형 쉘을 종료하고 명령 프롬프트에 명령을 입력하는 것입니다.

+1

아! 이것은 실제로 제가 고려하지 않은 변형입니다 - 그리고 투표가 알려진 오류를 감안할 때 이것은 합리적입니다. :) – Mario

+0

불행히도 이것은 작동하지 않습니다. 인수가 필요없는 프로그램은 정상적으로 실행됩니다. – mathsbeauty

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 

내가 Windows 명령에서, 당신은 ('test.py`가 더 좋았을 것) test로 스크립트를 저장하고 실행되었는지 추론이다 라인

usage: test [-h] [--sum] N [N ...] test: error: too few arguments 

생성하는

python -i test 

로서 그 사용법 메시지는 parser; test은 스크립트의 이름입니다.

나는 RESTART 행에 대해 확실하지 않습니다.Python 호출 (또는 일부 기본 환경 기능)에 -i 옵션이 포함되어있어서 argparse 단계가 실패한 후에도 대화 형 Python 세션에서 나가게됩니다.

>>> $ python test.py 1 2 3 4 
SyntaxError: invalid syntax 

그러나 상황은 모든 잘못 :

다음 명령은 바로 파이썬 예를 벗어났습니다. 문서에는 $이 포함되어있어 명령 줄 (Linux 쉘 또는 Windows 명령)에 입력되었음을 나타냅니다. 그리고 의미는 올바른 맥락에서 :

  • 실행 파이썬
  • 이 인수를 '1', '2'는 test.py 스크립트를
  • 를 실행하고 전달하도록 지시 등

그러나 이미 Python 인터프리터 (프롬프트 문자열 >>>으로 표시)에있는 경우 이는 의미가 없습니다. pythontest.py은 파이썬 안에서 기본 의미가없는 문자열입니다. 따라서 해석기는 구문 오류를 발생시킵니다. 그리고 어떤 변형도 그것을 고쳐주지 않습니다. 매우 다른 구문이

>>> parser.parse_args(['--sum', '7', '-1', '42']) 

:

을 따라 조금 더는 argparse 문서는 파이썬 대화 형 세션 내에서 parser를 호출의 예를 제공합니다. 이 python -i 컨텍스트에서 실행해야합니다.

다시 Windows 명령 창에 가서

python test 1 2 3 4 

입력하는 작업의 더 나은 기회가있다. 그래도 작동하지 않는다면, 더 기본적인 Python 스크립트를 실행하는 데 집중해야합니다.

=========

여기에 리눅스 쉘에서 또 다른 간단한 스크립트를 실행하는 예입니다. ...$은 쉘 프롬프트입니다. >>>은 파이썬 프롬프트입니다. 초기 파이썬 호출에 -i을 추가하면 파싱 한 후에 파이썬에 남아있게됩니다.

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$ 
관련 문제