파이썬에서 파일을 처리하는 방법

게시 됨: 2022-03-11

모든 프로그래밍 언어에서 파일 처리는 중요한 측면입니다. 또한 Python은 파일 읽기 및 쓰기 등과 같은 다양한 모드에서 파일 작업을 지원합니다.

이 자습서를 마치면 다음을 수행할 수 있습니다.

  • Python에서 파일 열기 및 읽기,
  • 텍스트 파일에서 라인 읽기,
  • 쓰기 및 파일에 추가,
  • 컨텍스트 관리자를 사용하여 Python에서 파일 작업.

파이썬에서 파일을 읽는 방법

Python에서 파일을 열려면 다음과 같은 일반 구문을 사용할 수 있습니다. open('file_name','mode') .

  • 여기서 file_name 은 파일의 이름입니다.

참고: 열려는 파일이 현재 작업 디렉터리에 있는 경우 파일 이름만 언급할 수 있습니다. 작업 환경의 다른 폴더에 있는 경우 파일 경로를 포함해야 합니다.

  • 매개변수 mode 는 파일을 여는 모드를 지정합니다.

파일을 여는 기본 모드는 문자 'r' 로 표시되는 읽기 입니다. 그러나 모드를 명시적으로 지정하는 것이 좋습니다.

시작하기 전에 이 예제에서 사용할 lib.txt 파일을 살펴보겠습니다.

이 GitHub 리포지토리에서 이 자습서에 사용된 텍스트 파일과 코드를 다운로드합니다.

아래 코드 스니펫은 open() 함수를 사용하여 Python에서 텍스트 파일 'lib.txt' 를 열고 그 내용을 읽는 방법을 보여줍니다.

 file = open('lib.txt','r') contents = file.read() print(contents) file.close() # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels

위의 예에서,

  • open() 함수는 파일 객체를 반환하고 우리는 그것을 file 이라고 부르기로 선택했습니다.
  • 다음으로 file 에서 read() 메서드를 호출합니다.
  • 이제 변수 contents 에 파일의 내용이 포함됩니다. 그리고 우리는 그것을 인쇄합니다.
  • 마지막으로 파일을 닫습니다.

그러나 파일을 닫는 것을 잊어버리면 리소스가 낭비될 수 있습니다. 많은 수의 이러한 파일로 작업하는 경우 상당한 메모리 사용량이 있을 수 있습니다. 여러 파일을 열었지만 닫지 않았기 때문입니다.

이제 다음을 사용하여 파일을 여는 더 나은 방법을 알아보겠습니다. 컨텍스트 관리자. 아래 코드 스니펫은 사용 방법을 보여줍니다.

 with open('lib.txt','r') as f: contents = f.read() print(contents)

연락처 관리자를 사용하여 파일 작업을 할 때 close() 메서드를 사용할 필요가 없습니다. 파일은 I/O 작업이 완료된 후 자동으로 닫힙니다.

파이썬에서 파일에서 줄을 읽는 방법

샘플 텍스트 파일에는 몇 줄만 있었습니다. 따라서 한 번에 모든 파일 내용을 읽는 것은 문제가 되지 않았습니다.

파이썬 읽기 파일

그러나 대용량 파일을 읽어야 하는 경우 위와 같이 read() 메서드를 사용하는 것은 그다지 효율적이지 않을 수 있습니다.

실제로 텍스트 파일의 크기가 매우 크면 곧 메모리가 부족해질 수 있습니다. 그렇기 때문에 텍스트 파일에서 읽기 전용 행을 읽고 싶을 수 있으며 이 섹션에서 이 작업을 수행하는 방법을 배웁니다.

Python의 readline() 메서드를 사용하여 파일에서 줄 읽기

readline() 메서드는 파일에서 한 번에 한 줄씩 읽습니다.

다음 코드 조각을 실행합니다.

 with open('lib.txt','r') as f: line = f.readline() print(line) line = f.readline() print(line) # Output Hello, there! Here are a few helpful Python libraries:

첫 번째 readline() 메서드 호출 후 파일의 첫 번째 줄이 출력되는 것을 볼 수 있습니다. 그리고 readline() 메서드에 대한 두 번째 호출은 파일의 두 번째 줄을 반환합니다.

이는 첫 번째 메서드 호출 후 파일 포인터가 두 번째 줄의 시작 부분에 있기 때문입니다.

Python에서는 tell() 메서드를 사용하여 파일 포인터의 현재 위치를 가져올 수 있습니다. 그리고 파일 포인터를 특정 위치로 옮기기 seek() 메소드를 사용할 수 있습니다.

아래 코드 스니펫에서는 첫 번째 메서드 호출 후에 f.seek(0) 을 사용합니다. 이렇게 하면 파일 포인터가 텍스트 파일의 시작 부분으로 이동합니다. 그렇기 때문에 두 번 모두 파일의 첫 번째 줄이 인쇄됩니다.

 with open('lib.txt','r') as f: line = f.readline() print(line) f.seek(0) line = f.readline() print(line) # Output Hello, there! Hello, there!

Python의 readlines() 메서드를 사용하여 파일에서 줄 읽기

readlines() 라는 밀접하게 관련된 또 다른 메서드가 있습니다.

다음 코드 조각을 실행하면 readlines() 메서드가 파일의 모든 줄 목록을 반환하는 것을 볼 수 있습니다.

 with open('lib.txt','r') as f: lines = f.readlines() print(lines) # Output ['Hello, there!\n', 'Here are a few helpful Python libraries:\n', '1) NumPy\n', '2) pandas\n', '3) matplotlib\n', '4) seaborn\n', '5) scikit-learn\n', '6) BeautifulSoup\n', '7) Scrapy\n', '8) nltk\n', '9) Bokeh\n', '10) statsmodels\n', '\n']

Python의 for 루프를 사용하여 파일에서 줄 읽기

텍스트 파일에서 줄을 읽으려면 for 루프를 사용할 수도 있습니다.

파일 객체가 있으면 for 루프를 사용하여 파일 내용을 반복하여 아래와 같이 한 번에 한 줄씩 출력할 수 있습니다. 한 번에 한 줄에만 액세스하고 전체 파일 내용을 읽지 않는 방법에 주목하십시오.

 with open('lib.txt','r') as f: for line in f: print(line, end='')

참고 : Python의 print() 함수를 사용할 때 기본 구분 기호는 개행 문자 '\n' 입니다. 그러나 원본 파일에는 이러한 새 줄이 없습니다. 따라서 파일 내용을 있는 그대로 인쇄하려면 구분자 인수를 빈 문자열로 설정합니다. end = '' .

Python의 파일에서 콘텐츠 청크를 읽는 방법

Python에서는 파일의 내용을 작은 청크로 읽도록 선택할 수도 있습니다.

아래 코드를 읽어보세요.

  • 여기에서 우리는 chunk_size50 으로 설정합니다. 이것은 파일의 처음 50자를 읽어들여 출력함을 의미합니다.
  • 이제 파일 객체 ftell() 메소드를 호출하십시오. 파일 포인터가 이제 예상한 위치 51에 있음을 알 수 있습니다.
 chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk) current = f.tell() print(f"Current position of file pointer: {current}") # Output Hello, there! Here are a few helpful Python librar Current position of file pointer: 51

이 기술을 사용하여 작은 청크로 전체 파일을 읽을 수도 있습니다.

다음 코드 조각은 이 작업을 수행하는 방법을 보여줍니다.

 chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk,end='') while(len(chunk)>0): chunk = f.read(chunk_size) print(chunk,end='') # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels

여기서 우리는 파일의 내용을 읽기 위해 while 루프를 사용합니다. 파일의 끝에 도달할 때까지 크기 50의 청크에서 파일의 내용을 읽습니다.

파이썬에서 파일에 쓰는 방법

Python에서 텍스트 파일에 쓰려면 'w' 를 지정하여 쓰기 모드에서 열어야 합니다.

파이썬 파일에 쓰기

아래 코드 스니펫은 수행 방법을 보여줍니다.

 with open('new_file.txt','w') as f: f.write('Hello, Python!')

작업 디렉토리에 'new_file.txt' 가 생성되었음을 알 수 있습니다.

이제 위의 코드 셀을 다시 한 번 실행하십시오.

터미널에서 다음 명령을 실행합니다.

 cat new_file.txt # Output: Hello, Python!

이상적으로는 파일에 두 번 작성했습니다. 그럼 Hello, Python! 두 번 인쇄했어야 했어, 네?

그러나 한 번만 인쇄되었음을 알 수 있습니다. 글쎄, 이것은 쓰기 ( w ) 모드에서 파일을 열 때 기본적으로 파일의 내용을 새 내용으로 덮어쓰기 때문입니다.

기존 내용을 덮어쓰지 않고 파일 끝에 추가 하려면 추가 모드에서 파일을 열어야 합니다. 그리고 다음 섹션에서 이 작업을 수행하는 방법을 볼 수 있습니다.

Python에서 파일에 추가하는 방법

덮어쓰지 않고 파일에 내용을 추가하려면 추가 모드에서 엽니다.

이렇게 하려면 ` 'a' ( append 의 경우 a )를 사용하고 모드를 명시적으로 지정합니다.

다음으로 다음 코드 셀을 두 번 실행합니다.

 with open('new_file.txt','a') as f: f.write('Hello, Python!')

파일에 추가한 대로 텍스트가 이제 두 번 인쇄되는 방식에 주목하십시오.

 cat new_file.txt # Output: Hello, Python!Hello, Python!

결론

이 튜토리얼에서 살펴본 내용을 빠르게 요약해 보겠습니다.

  • 파일 읽기, 쓰기 및 추가와 같은 일반적인 파일 I/O 작업을 배웠습니다.
  • 또한 파일 포인터를 특정 위치로 이동하기 위해 seek() 메서드를 사용하는 방법도 배웠습니다.
  • Tell() 메서드를 사용하여 파일 포인터의 현재 위치를 검색하는 방법.

이 튜토리얼이 도움이 되었기를 바랍니다. 이제 Python에서 텍스트 파일로 작업하는 방법을 배웠으므로 Python에서 JSON 파일로 작업하는 방법을 배우십시오.

관련된:

Python에서 3단계로 목록의 길이를 확인하십시오.