명령줄에서 파일 읽기의 기본 원리
파이썬(Python)으로 명령줄에서 파일을 읽으려면, 실행하려는 스크립트가 명령줄 인자(CLI argument)를 받을 수 있도록 작성해야 합니다. 예를 들어, 터미널에 파일 내용 전체를 그대로 출력하는 유닉스의 cat 명령어를 파이썬으로 직접 구현한다고 가정해 보겠습니다. 이때 핵심 역할을 하는 것이 바로 sys.argv입니다.
간단한 cat 명령어 구현 예제
아래 프로그램은 첫 번째 명령줄 인자로 전달된 파일을 열어 그 내용을 화면에 출력합니다.
import sys
with open(sys.argv[1], 'r') as f:
contents = f.read()
print(contents)참고로 마지막 줄의 print(contents)는 파이썬 3 문법입니다. 파이썬 2에서는 print contents처럼 괄호 없이 작성해야 합니다.
스크립트 실행하기
위 코드를 cat.py라는 이름으로 저장한 뒤, 터미널에서 다음과 같이 실행합니다.
$ python cat.py my_file.txtsys.argv의 동작 방식
실행 시 my_file.txt는 명령줄 인자로 cat.py에 전달되며, sys.argv 리스트의 두 번째 요소인 argv[1]에 문자열 형태로 저장됩니다. argv[0]에는 항상 실행된 스크립트 파일 자신의 이름이 들어간다는 점을 기억해 두면 좋습니다. 이렇게 얻은 파일 경로를 open() 함수에 넘기면 파일을 열고, read() 메서드를 호출해 전체 내용을 손쉽게 읽어올 수 있습니다.
또한 위 예제에서는 with 문을 사용했습니다. 덕분에 파일을 다 읽은 후 별도의 close() 호출 없이도 파일이 자동으로 안전하게 닫히므로, 리소스 누수를 걱정할 필요가 없습니다.