2015-01-27 9 views
0

정교하게, 나는 파이썬에서 사용자가 원하는만큼의 인자를 제공 할 수있는 sys.argv [] 함수를 코딩하는 법을 배우는 데 관심이있다. 나는 이것을 할 수있는 더 좋은 방법이 있는지, 아니면 전혀 할 수 있는지 확신 할 수 없다.sys.argv [] 인수를 무제한으로 가져 오는 방법은 무엇입니까?

이 점은 다양한 크기와 수량의 텍스트 문서간에 유사성 도구를 개발하는 데 있습니다. 이 상황에서 유스 케이스는 argv [1]와 argv [unlimited]만큼 적게 걸린다.

모든 입력, 출처 또는 조언을 환영합니다.

+5

잘 모르겠습니다. 'sys.argv'는'list'입니다. 그것은 당신이 원하는만큼의 요소를 가질 수 있습니다. (OS에 의해 제한되는 제약, 하드웨어의 메모리 제한 등 ...) – mgilson

답변

6

sys.argv은 그냥 일반적인 파이썬 목록 일 뿐이므로 len(sys.argv)을 예로 들거나 다른 반복 가능 문자열과 마찬가지로 내용을 직접 열거 할 수 있습니다 (for ... in 루프 사용).

sys.argv[0]은 프로그램의 이름이므로 첫 번째 항목은 건너 뛰십시오. (그런 다음 (len(sys.argv) - 1) 호출자가 제공하는 인수의 수입니다 다음과 같습니다.)

import sys 

for arg in sys.argv[1:]: 
    print arg 

예 호출 :

귀하의 경우
$ python test.py a b c 
a 
b 
c 

당신이에하고 싶었던대로 처리와 print arg을 대체 할을 논의.

운영 체제가 부과하는 제한 사항까지 적용됩니다. (일부 OS는 프로그램에 전달할 수있는 인수의 수를 제한합니다. 예를 들어 Linux에서는 xargs --show-limits으로 이러한 제한을 볼 수 있습니다.)

+0

정상적인리스트처럼 설정되어 있다는 것을 몰랐습니다. 그래서리스트를 반복 할 수 있다면 목록을 동적으로 확장 할 수 있습니다. 웬일인지 나는 그것이 한 번에 하나씩 불렀다는 선입견을 가지고 있었다. 나는 하마처럼 느껴져. 나는 월요일에 그것을 비난한다. – castaway2000

+0

이 문제에 대한 설명에 감사드립니다. – castaway2000

+0

@ castaway2000 정확히 구문이 의미하는 것입니다. 그렇습니다. 그것은 [목록 슬라이스]입니다 (https://docs.python.org/2/tutorial/introduction.html#lists). * "목록을 반복 할 수 있다면 동적으로 목록을 확장 할 수 있습니다."*이 목록을 만들거나 확장하지 마십시오. 파이썬은 스크립트가 실행되기 전에 그것을 생성합니다. – cdhowie