fileinput
--- 여러 입력 스트림에서 줄을 이터레이트 하기¶
소스 코드: Lib/fileinput.py
이 모듈은 표준 입력이나 파일 목록에 대한 루프를 빠르게 작성하기 위한 도우미 클래스와 함수를 구현합니다. 단지 하나의 파일을 읽거나 쓰려면 open()
을 참조하십시오.
일반적인 사용법은 다음과 같습니다:
import fileinput
for line in fileinput.input():
process(line)
이것은 sys.argv[1:]
에 나열된 모든 파일의 줄을 이터레이트 하며, 목록이 비어 있으면 기본값은 sys.stdin
입니다. 파일 이름이 '-'
이면, 이 또한 sys.stdin
으로 대체되고 선택적 인자 mode와 openhook은 무시됩니다. 대체 파일명 목록을 지정하려면, input()
의 첫 번째 인자로 전달하십시오. 단일 파일 이름도 허용됩니다.
모든 파일은 기본적으로 텍스트 모드로 열리지만, input()
이나 FileInput
을 호출할 때 mode 매개 변수를 지정하여 이를 재정의할 수 있습니다. 파일을 열거나 읽는 동안 I/O 에러가 발생하면, OSError
가 발생합니다.
sys.stdin
이 두 번 이상 사용되면, 대화식으로 사용되거나 명시적으로 재설정된 경우(예를 들어, sys.stdin.seek(0)
을 사용해서)를 제외하고 두 번째와 그 이후의 사용은 줄을 반환하지 않습니다.
빈 파일은 열리고 즉시 닫힙니다; 파일명 목록에 존재함이 인식되는 유일한 시간은 마지막에 열린 파일이 비어있을 때입니다.
줄은 줄 바꿈이 그대로 유지된 채로 반환됩니다. 즉, 파일의 마지막 줄에는 줄 바꿈이 없을 수도 있습니다.
fileinput.input()
이나 FileInput()
의 openhook 매개 변수를 통해 열기 훅을 제공하여 파일을 여는 방법을 제어할 수 있습니다. 훅은 두 개의 인자 filename과 mode를 취하고, 그에 따라 열린 파일류 객체를 반환하는 함수여야 합니다. 이 모듈에는 두 가지 유용한 훅이 이미 제공됩니다.
다음 함수는 이 모듈의 기본 인터페이스입니다:
-
fileinput.
input
(files=None, inplace=False, backup='', *, mode='r', openhook=None)¶ FileInput
클래스의 인스턴스를 만듭니다. 인스턴스는 이 모듈의 함수에 대한 전역 상태로 사용되며, 이터레이션 중에 사용하기 위해 반환되기도 합니다. 이 함수의 매개 변수는FileInput
클래스의 생성자로 전달됩니다.FileInput
인스턴스는with
문에서 컨텍스트 관리자로 사용될 수 있습니다. 이 예제에서, 예외가 발생하더라도with
문이 종료된 후 input이 닫힙니다:with fileinput.input(files=('spam.txt', 'eggs.txt')) as f: for line in f: process(line)
버전 3.2에서 변경: 컨텍스트 관리자로 사용할 수 있습니다.
버전 3.8에서 변경: 키워드 매개 변수 mode와 openhook은 이제 키워드 전용입니다.
다음 함수는 fileinput.input()
에 의해 만들어진 전역 상태를 사용합니다; 활성 상태가 없으면, RuntimeError
가 발생합니다.
-
fileinput.
filename
()¶ 현재 읽고 있는 파일의 이름을 반환합니다. 첫 번째 줄을 읽기 전에는,
None
을 반환합니다.
-
fileinput.
fileno
()¶ 현재 파일의 정수 "파일 기술자"를 반환합니다. 파일이 열리지 않았으면 (첫 번째 줄 전과 파일 사이에),
-1
을 반환합니다.
-
fileinput.
lineno
()¶ 방금 읽은 줄의 누적 줄 번호를 반환합니다. 첫 번째 줄을 읽기 전에는,
0
을 반환합니다. 마지막 파일의 마지막 줄을 읽은 후에는, 그 줄의 줄 번호를 반환합니다.
-
fileinput.
filelineno
()¶ 현재 파일의 줄 번호를 반환합니다. 첫 번째 줄을 읽기 전에는,
0
을 반환합니다. 마지막 파일의 마지막 줄을 읽은 후에는, 그 줄의 파일 내에서의 줄 번호를 반환합니다.
-
fileinput.
isfirstline
()¶ 방금 읽은 줄이 파일의 첫 번째 줄이면
True
를, 그렇지 않으면False
를 반환합니다.
-
fileinput.
isstdin
()¶ 마지막 줄을
sys.stdin
에서 읽었으면True
를, 그렇지 않으면False
를 반환합니다.
-
fileinput.
nextfile
()¶ 다음 이터레이션에서 다음 파일(있다면)의 첫 번째 줄을 읽도록 현재 파일을 닫습니다; 파일에서 읽지 않은 줄은 누적 줄 수에 포함되지 않습니다. 파일명은 다음 파일의 첫 번째 줄을 읽을 때까지 변경되지 않습니다. 첫 번째 줄을 읽기 전에는, 이 함수가 효과가 없습니다; 첫 번째 파일을 건너뛰는 데 사용할 수 없습니다. 마지막 파일의 마지막 줄을 읽은 후에는, 이 함수는 효과가 없습니다.
-
fileinput.
close
()¶ 시퀀스를 닫습니다.
모듈이 제공하는 시퀀스 동작을 구현하는 클래스는 서브 클래싱에도 사용할 수 있습니다:
-
class
fileinput.
FileInput
(files=None, inplace=False, backup='', *, mode='r', openhook=None)¶ FileInput
클래스는 구현입니다; 그 메서드filename()
,fileno()
,lineno()
,filelineno()
,isfirstline()
,isstdin()
,nextfile()
및close()
는 모듈에 있는 같은 이름의 함수에 해당합니다. 또한 다음 입력 줄을 반환하는readline()
메서드와 시퀀스 동작을 구현하는__getitem__()
메서드가 있습니다. 시퀀스는 엄격하게 순차적으로 액세스해야 합니다; 무작위 액세스와readline()
은 혼합될 수 없습니다.mode로
open()
에 전달할 파일 모드를 지정할 수 있습니다.'r'
,'rU'
,'U'
및'rb'
중 하나여야 합니다.openhook이 제공되면 두 개의 인자 filename과 mode를 취하고, 이에 따라 열린 파일류 객체를 반환하는 함수여야 합니다. inplace와 openhook을 함께 사용할 수 없습니다.
FileInput
인스턴스는with
문에서 컨텍스트 관리자로 사용될 수 있습니다. 이 예제에서, 예외가 발생하더라도with
문이 종료된 후 input이 닫힙니다:with FileInput(files=('spam.txt', 'eggs.txt')) as input: process(input)
버전 3.2에서 변경: 컨텍스트 관리자로 사용할 수 있습니다.
버전 3.4부터 폐지:
'rU'
와'U'
모드.버전 3.8부터 폐지:
__getitem__()
메서드에 대한 지원은 폐지되었습니다.버전 3.8에서 변경: 키워드 매개 변수 mode와 openhook은 이제 키워드 전용입니다.
선택적 제자리 필터링(in-place filtering): 키워드 인자 inplace=True
가 fileinput.input()
이나 FileInput
생성자로 전달되면, 파일이 백업 파일로 이동되고 표준 출력은 입력 파일로 보내집니다 (백업 파일과 같은 이름의 파일이 이미 있으면, 조용히 대체됩니다). 이를 통해 입력 파일을 다시 쓰는 필터를 작성할 수 있습니다. backup 매개 변수가 제공되면 (일반적으로 backup='.<some extension>'
으로), 백업 파일의 확장자를 지정하고, 백업 파일은 그대로 남아 있습니다; 기본적으로 확장자는 '.bak'
이고, 출력 파일을 닫을 때 삭제됩니다. 표준 입력을 읽을 때는 제자리 필터링이 비활성화됩니다.
이 모듈은 다음과 같은 두 개의 열기 훅을 제공합니다: