2014-07-27 4 views
1

저는 파이썬에서 새롭고 일부 계산을 위해 파일을 처리하는 스크립트를 개발 중입니다. 커맨드 라인에서 스크립트 (preprocess.py)는 다음과 같이 호출된다파일을 선택적 매개 변수로 사용합니다.

python preprocess.py if.txt of.txt 13 13 41 41 52 24 

if.txt 출력 파일이다 of.txt 입력 파일이며, (13 13 41 41 52 24)는 단지 크기 그룹 및 하위 데이터 그룹

스크립트의 한 부분에서 계산은 두 개의 변수 (평균 = 0 및 표준 = 1)로 이루어집니다.

스크립트가 선택적 매개 변수 인 2 개의 값 (평균 및 표준 편차)을 포함하는 파일을 허용하도록 스크립트를 수정해야합니다. 위와 같이 스크립트를 호출하면 평균 =

python preprocess.py if.txt of.txt 13 13 41 41 52 24 xxxx.txt 

스크립트가 xxxx.txt 파일의 두 값을 가지고 각각의 변수 (평균 및 표준)의 각 값을 저장 : 0 STD = 1하지만 스크립트 같이 호출되는 경우.

이제 스크립트에서 sys.argv[] 명령을 사용하여 매개 변수를 가져옵니다. 이 문제를 해결할 방법을 찾고 있었고 argparse 모듈에서이를 해결할 수 있지만 파일에서 값을 가져 와서 예상 한대로 저장하는 방법을 이해할 수 없다는 것을 알았습니다.

  1. 가 어떻게 xxxx.txt이 선택적 매개 변수를 제출 만들기 위해 argparse 모듈을 사용하는 방법 두 변수에 해당 파일에 두 값을 저장 (평균 및 표준)?

  2. argparse 모듈을 사용하는 경우 argparse를 사용하여 다른 모든 매개 변수를 가져와야합니까? 그렇다면 어떻게해야합니까?

PD : 저는 영어를 배우려고합니다. 실수를하면 제발 저를 시정하십시오. INT 값의 수가 고정되어있는 경우

+2

무엇을 시도 했습니까? 이걸 시도 했니? 너 뭐 붙어 있니? –

+2

['argparse' 튜토리얼] (https://docs.python.org/2/howto/argparse.html)을 확인하십시오. 쉽게 이해할 수 있으며 시작하는 데 도움이됩니다. – MattDMo

+0

'argparse'를 사용하고 싶지 않고 마지막 인자를 확인하고 싶다면'int()'를 사용하여 변환 할 수 없다면 파일 이름입니다. – furas

답변

0

,이 스크립트는

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('file1') 
parser.add_argument('file2') 
parser.add_argument('vars', type=int, nargs=3) 
parser.add_argument('file3',nargs='?') 
print(parser.parse_args()) 

일 것 '을?' 마지막 인수가 선택적이라는 것을 의미합니다.

가 INT의 변수 수는 그러나

parser.add_argument('vars', type=int, nargs='+') 

로 촬영 할 수 있으며,이 변수 nargs 함께 작동하지 않습니다. '+'는 모든 것을 얻을 것이고, '?'에 대해서는 아무 것도 남기지 않을 것입니다.

나는 선택적 파일을 '선택적/플래그 지정'인수로 제안 할 것입니다. 이것이 선택 품목이 일반적으로 처리되는 방식이며, 위치 지정을 처리 할 때이 모호성을 해결합니다.

parser.add_argument('--file3') 

python preprocess.py if.txt of.txt 13 13 41 41 52 24 --file3 xxxx.txt 

argparse 접근법은 마지막 sys.argv 값을 확인한다. int처럼 보이지 않으면 파일 이름이라고 가정하고 이전과 같이 나머지 구문 분석을 계속하십시오.

+0

특히 hpaulj와 MattDMo에게 감사드립니다. 제임스 : 물론 나는 여기에 8 개의 tests.py를 가지고 있는데, argparse 모듈을 이해하기 위해 무언가를 만들려고 노력하고있다. 물론 좋은 결과는 없다. 그래서 나는 여기에 무엇을 넣을 지 모른다. 그러나 글쎄,이 때문에 내가이 스레드를 만들었습니다. 당신이 대답 해 주셔서 감사합니다, 다음에 뭔가를 집어 넣을 게요. furas : 멋진 팁, 나중에 사용해 보겠습니다. MattDDo에게 : 혀를 가져 주셔서 감사합니다. 나는 그것에 대해 몰랐습니다. 이 혀와 hpaulj의 답변으로 나는 내가 원하는 것을 얻었습니다. – user3341276

+0

이것은 일단 매개 변수가 입력되면 xxxx.txt 파일에서 값을 추출한 것입니다. args = parser.parse.args() /// if args.file3 : /// values ​​= np .genfromtxt (args.file3) /// 평균 = 값 [0] /// std = 값 [1]' – user3341276