웹사이트 검색

Python 3에서 일반 텍스트 파일을 처리하는 방법


소개

Python은 데이터 처리를 위한 훌륭한 도구입니다. 프로그래밍에서 가장 일반적인 작업에는 데이터 읽기, 쓰기 또는 조작이 포함됩니다. 이러한 이유로 다양한 유형의 데이터를 저장하는 다양한 파일 형식을 처리하는 방법을 아는 것이 특히 유용합니다.

예를 들어 액세스 제어를 위해 사용자 목록을 확인하는 Python 프로그램을 생각해 보십시오. 사용자 목록은 텍스트 파일로 저장되어 액세스를 확인하거나 권한을 수정할 수 있습니다. Python을 사용하여 파일을 열고, 읽고, 쓰고, 닫을 수 있으면 이와 같은 작업을 수행하는 데 도움이 됩니다.

이 자습서에서는 Python이 처리할 수 있는 일부 파일 형식에 대해 간략하게 설명합니다. 이에 대한 간략한 소개 후 Python 3에서 텍스트 파일을 열고 읽고 쓰는 방법을 배웁니다. 완료되면 Python에서 일반 텍스트 파일을 처리할 수 있습니다.

전제 조건

이 자습서에서는 Python 3이 설치되어 있어야 하고 컴퓨터에 로컬 프로그래밍 환경이 설정되어 있어야 합니다. 그렇지 않은 경우 운영 체제에 대한 적절한 설치 및 설정 가이드에 따라 설정할 수 있습니다.

  • Ubuntu 22.04 또는 Debian 8
  • 센트OS 7
  • 맥 OS X
  • 윈도우 10

배경

Python은 매우 유연하며 다음을 포함하되 이에 국한되지 않는 다양한 파일 형식을 쉽게 처리할 수 있습니다.

File type Description
Plain text Plain text files store data that represents only characters (or strings) and excludes any structured metadata
CSV Comma-separated values files use commas (or other delimiters) to structure stored data, allowing data to be saved in a table format
HTML HyperText Markup Language files store structured data intended to be displayed by a browser and is commonly used with websites
JSON JavaScript Object Notation is a simple and efficient format, making it one of the most commonly used formats to store and transfer structured data

이 튜토리얼은 일반 텍스트 파일 작업에 중점을 둡니다.

1단계 - 텍스트 파일 생성

Python에서 작업을 시작하기 전에 작업할 파일이 있는지 확인해야 합니다. 이렇게 하려면 코드 편집기를 열고 days.txt라는 새 일반 텍스트 파일을 만듭니다.

새 파일에 요일을 나열하는 몇 줄의 텍스트를 입력합니다.

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

다음으로 파일을 저장하고 해당 위치를 기록해 둡니다. 이 예에서는 사용자 sammy가 여기에 파일을 /home/sammy/days.txt로 저장했습니다. 이는 Python에서 파일을 여는 이후 단계에서 매우 중요합니다.

이제 처리할 파일이 있으므로 코딩을 시작할 수 있습니다.

2단계 - 파일 열기

코드 편집기에서 새 Python 파일을 만들고 이름을 files.py로 지정합니다.

Python에서 파일을 열려면 먼저 디스크의 파일을 Python의 변수와 연결하는 방법이 필요합니다. 이 프로세스를 파일 열기라고 하고 변수를 파일 핸들이라고 합니다. 우리는 파이썬에게 파일이 어디에 있는지 알려주는 것으로 시작합니다. 파일 위치는 종종 파일 경로라고 합니다 — 이 예에서는 /home/sammy/days.txt입니다. 이 경로 정보를 저장할 변수를 만듭니다.

path = '/home/sammy/days.txt'

이제 Python의 open() 함수를 사용하여 days.txt 파일을 열 수 있습니다. open() 함수에는 첫 번째 인수로 파일 경로가 필요합니다. 이 함수는 다른 많은 매개변수도 허용합니다. 그러나 가장 중요한 것은 선택적 mode 매개변수입니다. 이것은 파일이 열리는 모드를 지정하는 선택적 문자열입니다. 선택한 모드는 파일로 수행하려는 작업에 따라 다릅니다. 사용 가능한 모드는 다음과 같습니다.

  • r : 파일에서 읽기 위해 사용
  • w : 파일 쓰기에 사용
  • a : 파일에 추가하는 데 사용
  • r+ : 같은 파일을 읽고 쓰기 위해 사용

이 예제에서는 파일에서 읽기만 하려고 하므로 r 모드를 사용합니다. open() 함수를 사용하여 days.txt 파일을 열고 결과 파일 핸들을 변수 days_file에 할당합니다.

days_file = open(path, 'r')

이제 파일을 열었으므로 다음 단계에서는 내용을 읽는 과정을 안내합니다.

3단계 - 파일 읽기

파일이 열렸으므로 이제 할당된 변수를 통해 파일을 조작(즉, 파일에서 읽기)할 수 있습니다. Python은 파일에서 정보를 읽기 위한 세 가지 관련 작업을 제공합니다. 잠시 시간을 내어 각각의 작동 방식을 이해해 봅시다.

읽기 사용

첫 번째 작업 read()는 파일의 전체 내용을 단일 문자열로 반환합니다. 예를 들어:

days_file.read()

결과는 다음과 같습니다.

Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'

참고: <코드> 위 문자열에서 는 개행 문자를 나타냅니다. Python과 직접 상호 작용할 때(명령줄에서 단순히 python을 실행할 때처럼) Python은 를 사용합니다.\n 줄 바꿈을 표시합니다. 자신만의 문자열을 생성할 때 이를 사용하여 새 줄을 나타낼 수도 있습니다.

readline 사용

두 번째 작업 readline()은 파일의 다음 줄을 반환하고 다음 줄 바꿈 문자까지의 텍스트를 반환합니다. 간단히 말해서 이 작업은 파일을 한 줄씩 읽습니다.

days_file.readline()

결과는 다음과 같습니다.

Output
'Monday\n'

readline 작업으로 줄을 읽으면 파일을 읽을 현재 지점이 다음 줄로 이동합니다. 이 작업을 다시 호출하면 다음과 같이 파일의 다음 줄이 반환됩니다.

days_file.readline()
Output
'Tuesday\n'

readline 사용

마지막 작업인 readlines()는 파일의 줄 목록을 반환합니다. 여기서 목록의 각 항목은 단일 줄을 나타냅니다.

days_file.readlines()
Output
['Monday\n', 'Tuesday\n', 'Wednesday\n', 'Thursday\n', 'Friday\n', 'Saturday\n', 'Sunday\n']

파일에서 읽을 때 명심해야 할 사항은 읽기 작업 중 하나를 사용하여 파일을 읽은 후에는 다시 읽을 수 없다는 것입니다. 예를 들어 days_file.read()를 먼저 실행한 다음 days_file.readlines()를 실행하면 두 번째 작업에서 빈 문자열이 반환됩니다. 따라서 파일에서 읽으려면 언제든지 새 파일 변수를 열거나 seek() 메서드를 사용해야 합니다. 이는 이 자습서의 범위를 벗어납니다. 더 자세히 알고 싶다면 Python에 이러한 방법에 대한 훌륭한 문서가 있습니다.

이제 파일에서 읽었으니 새 파일에 쓰는 방법을 알아보겠습니다.

4단계 - 파일 쓰기

이 단계에서는 요일이라는 제목과 첫 번째 파일의 내용을 포함하는 새 파일을 작성합니다. 먼저 제목 변수를 만듭니다.

title = 'Days of the Week\n'

또한 days라고 하는 변수에 요일을 저장해야 합니다. 이 코드는 읽기 모드에서 파일을 열고 파일을 읽고 읽기 작업에서 반환된 출력을 새 변수 days에 저장합니다. 쉽게 따라할 수 있도록 2단계의 코드가 포함되어 있습니다.

path = '/home/sammy/days.txt'
days_file = open(path, 'r')
days = days_file.read()

이제 제목과 요일에 대한 변수가 있으므로 새 파일에 쓰기를 시작할 수 있습니다. 먼저 파일의 위치를 지정합니다. 이번에도 /home/sammy/ 디렉토리를 사용하므로 경로는 /home/sammy/new_days.txt가 됩니다. 그런 다음 w 모드가 지정된 open() 함수를 사용하여 쓰기 모드에서 새 파일을 열 수 있습니다.

new_path = '/home/sammy/new_days.txt'
new_days = open(new_path, 'w')

참고: 파일을 열기 전에 new_days.txt가 이미 존재하는 경우 이전 내용을 덮어쓰게 되므로 w 모드를 사용할 때 주의해야 합니다!

새 파일이 열리면 write() 메서드를 사용하여 데이터를 추가할 수 있습니다. 이 메서드는 단일 문자열 매개 변수를 사용하고 해당 데이터를 파일에 씁니다. 파일에서 새 줄을 시작하려면 줄 바꿈 문자 를 명시적으로 제공해야 합니다.\n, 요일을 할당할 때 포함됨\ntitle 변수에 추가합니다.

파일에 제목을 쓰고 요일을 씁니다. 스크립트의 진행 상황을 추적하는 데 자주 사용되는 파일에 작성 중인 내용을 일부 print 문에 추가하면 도움이 될 수 있습니다.

new_days.write(title)
print(title)

new_days.write(days)
print(days)

마지막으로 파일 작업을 마칠 때마다 파일을 닫는 것이 중요합니다.

5단계 - 파일 닫기

파일을 닫으면 디스크의 파일과 파일 핸들 간의 연결이 완료됩니다. 파일을 닫으면 다른 프로그램이 파일에 액세스할 수 있고 데이터를 안전하게 유지할 수 있습니다. 6단계에서 설명한 대로 with 문을 사용하지 않는 경우 항상 파일을 닫아야 합니다. 이 예에서는 close() 메서드를 사용하여 모든 파일을 닫습니다.

days_file.close()
new_days.close()

파일을 사용하여 스크립트가 완료되었으므로 close() 메서드를 사용하여 파일 핸들을 해제합니다.

6단계 - with 문 사용(선택 사항)

Python에서 파일 작업에 권장되는 방법(종종 Python 방식이라고 함)은 with 문이라는 언어 기능을 사용하는 것입니다. 이러한 문은 작업이 완료되는 컨텍스트를 설정하는 간단한 방법이며 해당 컨텍스트가 끝나면 일반적인 오류를 방지하기 위해 최종 세부 정보가 자동으로 처리됩니다. 파일로 작업하는 경우 with 문은 자동으로 파일을 닫아 작업을 마친 후에 해당 파일 핸들이 남아 있지 않도록 합니다.

함수 정의, if 문 또는 루프와 같은 Python의 모든 블록과 마찬가지로 with 문은 간단한 문 뒤에 : 가 오는 형식을 취합니다. 및 들여쓰기된 코드 블록. 다음은 파일을 열고 내용을 인쇄하는 코드의 예입니다.

with open('/home/sammy/days.txt', 'r') as days_file:
    days = days_file.read()
    print(days)

이 코드가 수행하는 작업을 단계별로 살펴보겠습니다. 이전과 마찬가지로 Python의 내장 open() 함수를 사용하여 파일 경로와 모드 매개변수를 전달하여 파일을 엽니다. 그러나 =를 사용하여 결과 파일 핸들을 변수에 할당하는 대신 with 문을 사용하므로 as를 사용하여 할당합니다. 예어. 이것은 전체 with 문의 구문의 일부입니다.

with action as result:
    . . .

: 다음에 다음 줄로 이동하여 코드를 들여씁니다. 이것이 Python이 기능 블록을 구성하는 방식입니다. 이전과 마찬가지로 days_file 변수에서 파일 핸들에 액세스할 수 있으므로 read() 메서드를 호출하여 모든 내용을 가져오고 print( ) 그들.

그러나 close() 메서드가 호출되지 않는다는 점에 유의하십시오. 코드가 이 블록을 벗어나는 즉시(즉, 코드의 다음 줄이 들여쓰기되지 않거나 파일이 끝나는 즉시) with 문의 컨텍스트가 해당 파일을 자동으로 닫는다는 것을 알기 때문입니다. . 이것의 이점은 매번 파일을 닫는 것을 기억할 필요가 없을 뿐만 아니라 특히 해당 파일을 처리하기 위한 모든 논리가 해당 블록 내에서 시각적 및 논리적으로 구별된다는 것입니다. 이 구조는 코드를 깔끔하고 읽기 쉽게 유지하는 데 도움이 됩니다.

이를 염두에 두고 with 문을 사용하기 전에 코드 형식을 다시 작성해 보겠습니다.

with open(path, 'r') as days_file, open(new_path, 'w') as new_days:
    days = days_file.read()
    
    new_days.write(title)
    new_days.write(days)
    
print(title)
print(days)

이제 코드가 훨씬 더 체계화되었습니다. 이전과 같이 몇 가지 변수를 정의하여 시작합니다. 두 파일의 경로와 새 파일의 제목을 지정하는 데 사용할 제목입니다. 그런 다음 with 문을 시작하여 두 파일을 열고 적절한 이름의 변수에 연결을 저장합니다. 이전과 마찬가지로 days_file의 내용을 읽은 다음 제목과 해당 내용을 new_days에 씁니다. 마지막으로 우리가 읽은 titledays의 값을 인쇄하기 위해 코드 들여쓰기를 해제하여 블록을 종료합니다.

참고: Python의 다른 블록과 달리 with 블록 내에서 정의된 변수는 해당 범위 밖에서 사용할 수 있습니다.

앞에서 설명한 대로 close() 메서드를 사용하려는 경우가 있고 작동 방식을 아는 것이 중요하지만 가장 일반적으로 with를 사용합니다. Python에서 파일 작업을 할 때의 명령문.

7단계 — 코드 확인

코드를 실행하기 전에 모든 것이 올바른지 확인하는 것이 좋습니다. 최종 제품은 다음과 같아야 합니다.

path = '/home/sammy/days.txt'
new_path = '/home/sammy/new_days.txt'
title = 'Days of the week\n'

with open(path, 'r') as days_file, open(new_path, 'w') as new_days:
    days = days_file.read()
    
    new_days.write(title)
    new_days.write(days)
    
print(title)
print(days)

코드를 저장한 후 터미널을 열고 다음과 같이 Python 스크립트를 실행합니다.

  1. python files.py

출력은 다음과 같습니다.

Output
Days of the Week Monday Tuesday Wednesday Thursday Friday Saturday Sunday

이제 새 파일(new_days.txt)을 열어 코드가 완전히 작동하는지 다시 확인하십시오. 모든 것이 잘 되었다면 다음을 포함해야 합니다.

Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

결론

이 자습서에서는 Python 3에서 일반 텍스트 파일을 처리하고 조작하는 방법을 살펴보았습니다. 이제 Python에서 파일을 열고 읽고 쓰고 닫을 수 있으며 Python에서 자신의 데이터로 계속 작업할 수 있습니다. 파이썬은 입력과 출력으로 작업할 때 다른 많은 유용한 방법을 제공하고 더 많은 것을 배울 수 있는 문서도 제공합니다.