이전 답변이 사용자의 지식에 대해 많은 가정을했음을 참고하고 싶습니다. 이 답변은 더 많은 튜토리얼 수준에서 질문에 답변을 시도합니다.
Python을 호출 할 때마다 sys.argv
명령 행에서 인수를 공백으로 구분하여 나타내는 문자열 목록이 자동으로 표시됩니다. 이름은 argv 및 argc가 명령 행 인수를 나타내는 C 프로그래밍 규칙 에서 나옵니다 .
파이썬에 익숙해지면 목록과 문자열에 대해 더 배우고 싶지만 그 동안 알아야 할 몇 가지 사항이 있습니다.
인수가 표현 된대로 인쇄하는 스크립트를 작성하면됩니다. 또한 len
목록 의 함수를 사용하여 인수 수를 인쇄합니다 .
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
이 스크립트에는 Python 2.6 이상이 필요합니다. 이 스크립트 print_args.py
를 호출하면 다른 인수로 스크립트 를 호출하여 어떻게되는지 확인할 수 있습니다.
> python print_args.py
['print_args.py'] 1
> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4
> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2
> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4
보시다시피 명령 줄 인수에는 스크립트 이름이 포함되지만 인터프리터 이름은 포함되지 않습니다. 이런 의미에서 파이썬은 스크립트 를 실행 파일 로 취급합니다 . 실행 파일 이름 (이 경우 Python)을 알아야하는 경우을 사용할 수 있습니다 sys.executable
.
예제에서 사용자가 따옴표로 묶은 인수로 스크립트를 호출 한 경우 공백이 포함 된 인수를 수신 할 수 있으므로 사용자가 제공 한 인수 목록이 표시됩니다.
이제 파이썬 코드에서이 문자열 목록을 프로그램의 입력으로 사용할 수 있습니다. 목록은 0부터 시작하는 정수로 색인화되므로 list [0] 구문을 사용하여 개별 항목을 가져올 수 있습니다. 예를 들어 스크립트 이름을 얻으려면
script_name = sys.argv[0] # this will always work.
흥미롭지 만 스크립트 이름을 거의 알 필요가 없습니다. 파일 이름에 대한 스크립트 다음에 첫 번째 인수를 얻으려면 다음을 수행하십시오.
filename = sys.argv[1]
이것은 매우 일반적인 사용법이지만 인수가 제공되지 않으면 IndexError와 함께 실패합니다.
또한 Python을 사용하면 목록 조각을 참조 할 수 있으므로 사용자 제공 인수의 다른 목록 (스크립트 이름이없는) 을 가져 오려면 다음을 수행 할 수 있습니다.
user_args = sys.argv[1:] # get everything after the script name
또한 Python을 사용하면 변수 이름에 일련의 항목 (목록 포함)을 지정할 수 있습니다. 따라서 사용자가 항상 두 개의 인수를 제공 할 것으로 예상되는 경우 해당 인수 (문자열)를 두 개의 변수에 지정할 수 있습니다.
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
따라서 특정 질문에 대답하기 위해 해당 스크립트에 제공된 sys.argv[1]
첫 번째 명령 줄 인수 ()를 나타냅니다 string
. 입력을 요구하지는 않지만 스크립트 이름 다음에 명령 행에 인수가 제공되지 않으면 IndexError와 함께 실패합니다.