2017-11-10 1 views
1

청크로 표준 입력 청크에서 EOF까지 읽고 싶습니다. 예를 들어, 매우 큰 파일을 가질 수 있으며 EOF가 발생할 때까지 STDIN에서 한 번에 1024 바이트를 읽고 처리하려고합니다. 한 번에 모든 것을 메모리에 저장하는 sys.stdin.read()를 보았습니다. 전체 파일을 저장할 충분한 공간이 없기 때문에 가능하지 않습니다. 또한 "line in sys.stdin"도 있지만, 이는 내가 찾고있는 것이 아닌, 줄 바꿈만으로 입력을 구분합니다. 파이썬에서 이것을 수행 할 수있는 방법이 있습니까?Python : EOF까지 바이트 덩어리로 stdin을 읽는 방법?

답변

1

파일 개체의 메서드는 size 매개 변수 (선택 사항)를 허용합니다.

size을 지정하면 최대 크기 바이트를 읽고 반환합니다. 파일의 끝에 도달하면, f.read()는 빈 문자열 ('')을 반환합니다.

io docsopen() docs을 참조하십시오.

의사 코드 :

with open('file') as f: 
    while True: 
     buffer = f.read(1024) # Returns *at most* 1024 bytes, maybe less 
     if buffer = '': 
      break 
     process_data(buffer) 
+0

아, 내 바보가 그것을 놓치지 마라. 고맙습니다! –

0

당신은 n은 인수로 읽을 수있는 바이트의 정수이다 f.read(n)을 사용하여 청크 표준 입력 (또는 파일)을 읽을 수 있습니다. 파일에 아무것도 남아 있지 않으면 빈 문자열을 반환합니다.

관련 문제