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

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

이 튜토리얼을 마치면 다음을 수행할 수 있습니다.

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

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

Python에서 파일을 열려면 일반 구문인 open(‘file_name’,’mode’)을 사용할 수 있습니다.

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

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

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

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

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

📁 이 튜토리얼에서 사용된 텍스트 파일과 코드를 다운로드하세요. 이 GitHub 리포지토리.

아래 코드 스니펫은 파이썬에서 open() 함수를 사용하여 ‘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() 함수는 파일 객체를 반환하고 우리는 그것을 파일이라고 부르기로 선택했습니다.
  • 다음으로 파일에서 read() 메서드를 호출합니다.
  • 이제 변수 내용에 파일의 내용이 포함됩니다. 그리고 우리는 그것을 인쇄합니다.
  • 마지막으로 파일을 닫습니다.

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

  Pinterest를 위한 16가지 최고의 제휴 프로그램

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

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()라는 또 다른 밀접하게 관련된 메서드가 있습니다.

  Linux에서 look 명령을 사용하는 방법

다음 코드 조각을 실행하면 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) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', '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_size를 50으로 설정합니다. 이것은 파일의 처음 50개 문자가 읽혀지고 또한 인쇄됨을 의미합니다.
  • 이제 파일 객체 f에 대해 tell() 메소드를 호출하십시오. 파일 포인터가 이제 예상한 위치 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의 청크에서 파일의 내용을 읽습니다. ✅

  Zoom에서 채팅을 비활성화하는 방법

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

파이썬에서 텍스트 파일에 쓰려면 쓰기 모드에서 열어야 합니다. ‘w’를 지정합니다.

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

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

작업 디렉토리에 ‘new_file.txt’가 생성된 것을 볼 수 있습니다.

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

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

cat new_file.txt

# Output: Hello, Python!

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

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

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

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

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

이렇게 하려면 추가를 위해 `’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 파일로 작업하는 방법을 배우십시오.

관련된:

3단계로 Python에서 목록의 길이를 확인합니다.