[python] Python에 argc 인수가 있습니까?

C와 C ++로 동일한 프로그램 (텍스트 파일 열기 및 내용 표시)을 작성했습니다. 이제 Python (Linux 시스템에서)에서 동일한 작업을 수행하고 있습니다.

C 프로그램에서 코드를 사용했습니다.

if (argc != 2) {
    /* exit program */
}

질문 : 인수의 수를 확인하기 위해 Python에서 사용되는 것은 무엇입니까?

#!/usr/bin/python
import sys
try:
    in_file = open(sys.argv[1], "r")
except:
    sys.exit("ERROR. Did you make a mistake in the spelling")
text = in_file.read()
print text
in_file.close()

전류 출력 :

./python names.txt = Displays text file (correct)
./python nam = error message: stated from the sys.ext line (correct)
./python = error message: stated from the sys.ext line (wrong: want it to be a
separate error message stating *no file name input*)



답변

당신은 그냥 할 수 있도록 파이썬에서 목록, 길이를 알고있는 len(sys.argv)요소의 수를 얻을 argv.


답변

나는 종종 명령 줄에서 고정 된 수의 인수를 읽기 위해 빠르고 더러운 트릭을 사용합니다.

[filename] = sys.argv[1:]

in_file = open(filename)   # Don't need the "r"

이것은 하나의 인수를 할당하고 filename정확히 하나의 인수가 없으면 예외를 발생시킵니다.


답변

인수 구문 분석을 위해 argparse를 보는 것이 좋습니다.

http://docs.python.org/dev/library/argparse.html

쉽게 할 수 있으며 무거운 짐을 직접들 필요가 없습니다.


답변

dir(sys)아니오라고 말합니다. len(sys.argv)작동하지만 Python에서는 권한보다 용서를 구하는 것이 낫습니다.

#!/usr/bin/python
import sys
try:
    in_file = open(sys.argv[1], "r")
except:
    sys.exit("ERROR. Can't read supplied filename.")
text = in_file.read()
print(text)
in_file.close()

잘 작동하고 더 짧습니다.

어쨌든 종료하려는 경우 다음이 더 좋습니다.

#!/usr/bin/python
import sys
text = open(sys.argv[1], "r").read()
print(text)

나는 print()2.7과 Python 3에서 작동하므로 사용 하고 있습니다.


답변