반복되는 질문 인 경우 죄송합니다. 데이터를 라인 스트림으로 처리하기 위해 파이썬 스크립트를 작성하려면 어떻게해야합니까? 내가 처리하고있는 파일이 크기 때문에이 작업을 수행해야하며 파일을 메모리로 읽지 않을 것입니다.어떻게 파이썬에서 텍스트 스트림을 처리 할 프로그램을 작성 하시겠습니까?
한 번에 한 줄의 파일을 읽을 수는 있지만 텍스트 스트림을 처리 할 수있는 내용이 필요하다는 것을 알고 있습니다.
반복되는 질문 인 경우 죄송합니다. 데이터를 라인 스트림으로 처리하기 위해 파이썬 스크립트를 작성하려면 어떻게해야합니까? 내가 처리하고있는 파일이 크기 때문에이 작업을 수행해야하며 파일을 메모리로 읽지 않을 것입니다.어떻게 파이썬에서 텍스트 스트림을 처리 할 프로그램을 작성 하시겠습니까?
한 번에 한 줄의 파일을 읽을 수는 있지만 텍스트 스트림을 처리 할 수있는 내용이 필요하다는 것을 알고 있습니다.
answer에서 설명한대로 stdin
에서 데이터를 읽을 수 있습니다.
cat file.txt | python script.py
당신이 할 수있는 코스 파이프 출력 : 파일을 처리 할 경우, 단지 (유닉스 플랫폼에서)이 같은 스크립트를 호출
for line in sys.stdin:
# do suff
:이 코드처럼 보일 것이다 거기에있는 다른 프로그램도.
f = open('somefile.txt')
for line in f:
process(line)
사실, f
는 반복 가능한 아무것도를 할 수 있습니다 문자열의 예를 들어 목록 그래서 심지어 sys.stdin
당신은 표준 입력에서 읽고 싶어합니다.
완성을 위해 f.close()를 추가하거나 _with_ 블록을 사용해야합니다 .. – extraneon
맞습니다. 그러나 그것이 프로그램이 수행하고있는 모든 작업 (행을 읽고'process()'를 호출하면) 파일을 명시 적으로 닫을 필요가 없습니다. –
이 질문과 같은 질문을하는 사람들은 대개 초보자이므로 신중해야합니다. 그들이 더 잘 알지 못하기 때문에 최선의 관행만을 보여줍니다. –
귀하의 사례는 정확히 the fileinput module을 위해 설계된 것 같습니다. 그런 식으로 당신이 할 수 있습니다 :
python script.py file1.txt file2.txt file3.txt file4.txt
과에서를 script.py
fileinput 함수를 사용하기위한 추가 보너스 당신이 Space_C0wb0y가 첫 번째 매개 변수로 대시를 추가 제안 거의 같은 일을 할 수 있다는 것입니다
import fileinput
for line in fileinput.input():
# do stuff here
:
를python script.py - < file.txt
또는
cat file.txt | python script.py -
fileinput이 Space_C0wb0y와 연결된 질문에 대한 답변에 언급되어 있는데, 나는 그것이 어떻게 활용 될 수 있는지 철자가 있다고 생각했습니다.
"줄의 흐름"읽기와 "한 번에 한 줄의 파일 읽기"의 차이점은 무엇입니까? –
글쎄, 입력 스트림에서, 나는 어디서 온 줄 신경 쓰지 않아. 나는 입력에 대한 파일 처리를하고 있지 않다. 내가 한 번에 한 줄씩 읽게되면 파일을 알게되고, 내 프로그램은 파일을 열고 닫아야합니다. – Sam