Python에서 파일 목록 읽기 및 쓰기

개요

Python 프로그래머는 배열, 목록 및 사전을 직렬화된 데이터 구조로 집중적으로 사용합니다. 이러한 데이터 구조를 지속적으로 저장하려면 파일이나 데이터베이스가 제대로 작동해야 합니다.

이 기사에서는 파일에 목록을 작성하는 방법과 해당 목록을 다시 메모리로 읽는 방법을 살펴보겠습니다.

파일에 데이터 쓰기, 그리고에 파일에서 데이터 읽기, Python 프로그래밍 언어는 표준 방법을 제공합니다. write()read() 단일 라인을 다룰 뿐만 아니라 writelines()readlines() 여러 줄을 처리하기 위해. 또한, 둘 다 pickle 그리고 json 모듈은 직렬화된 데이터 세트를 다루는 영리한 방법도 허용합니다.

사용법 - 읽다()쓰다() 행동 양식

문자(문자열)를 다루려면 기본 read()write() 방법은 훌륭하게 작동합니다. 이러한 목록을 파일에 한 줄씩 저장 listfile.txt 다음과 같이 할 수 있습니다.


places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

with open('listfile.txt', 'w') as filehandle:
    for listitem in places:
        filehandle.write(f'{listitem}n')

XNUMXD덴탈의 listitem 줄 바꿈으로 확장됩니다. "n", 먼저 출력 파일에 저장됩니다. 이제 파일에서 전체 목록을 읽는 방법을 살펴볼 수 있습니다. listfile.txt 메모리로 다시:


places = []


with open('listfile.txt', 'r') as filehandle:
    for line in filehandle:
        
        curr_place = line[:-1]
        
        places.append(curr_place)

문자열 끝에서 줄 바꿈을 제거해야 합니다. 이 경우 Python이 문자열에 대한 목록 작업도 허용한다는 것이 도움이 됩니다. 이 제거는 마지막 요소를 제외한 모든 것을 유지하는 문자열 자체에 대한 목록 작업으로 간단히 수행됩니다. 이 요소에는 문자가 포함되어 있습니다. "n" UNIX/Linux 시스템에서 줄 바꿈을 나타냅니다.

사용법 - 쓰기 라인()판독선() 행동 양식

이 기사의 시작 부분에서 언급했듯이 Python에는 두 가지 방법도 포함되어 있습니다. writelines()readlines() – 각각 한 단계에서 여러 줄을 쓰고 읽습니다. 디스크의 파일에 전체 목록을 작성해 보겠습니다.


places_list = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

with open('listfile.txt', 'w') as filehandle:
    filehandle.writelines(f"{place for place in places_list}n")

디스크의 파일에서 전체 목록을 읽으려면 다음을 수행해야 합니다.


places = []


with open('listfile.txt', 'r') as filehandle:
    filecontents = filehandle.readlines()
    for line in filecontents:
        
        curr_place = line[:-1]
        
        places.append(curr_place)

위의 코드는 다른 프로그래밍 언어에서 차용한 보다 전통적인 접근 방식을 따릅니다. 좀 더 써 보자. 파이썬 방법:


places = []


with open('listfile.txt', 'r') as filehandle:
    places = [current_place.rstrip() for current_place in filehandle.readlines()]

먼저 파일 내용을 다음을 통해 읽습니다. readlines(). 둘째, for 각 줄의 루프는 다음을 사용하여 줄 바꿈 문자를 제거합니다. rstrip() 방법. 셋째, 문자열이 장소 목록에 새 목록 항목으로 추가됩니다.

코드 앞의 목록과 비교하면 훨씬 더 간결하지만 초보자 Python 프로그래머에게는 읽기가 더 어려울 수 있습니다.

Joblib 모듈 사용

지금까지 설명한 초기 방법은 사람이 읽을 수 있는 방식으로 목록을 저장합니다. 말 그대로 파일의 순차 목록입니다. 이것은 CSV 파일과 같이 사용자가 추가로 사용할 수 있도록 간단한 보고서를 생성하거나 내보내기 파일을 출력하는 데 유용합니다. 그러나 – 목표가 목록을 파일로 직렬화하고 나중에 로드할 수 있다면 사람이 읽을 수 있는 형식으로 저장할 필요가 없습니다.

XNUMXD덴탈의 joblib 모듈은 Python 객체를 덤프하는 가장 쉬운 방법을 제공합니다(실제로 모든 객체가 될 수 있음):

import joblib

places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

joblib.dump(places, 'places.sav')

places = joblib.load('places.sav')
print(places) 

joblib 효율적인 형식으로 개체를 직렬화하고 나중에 로드하는 가장 간단하고 깔끔한 방법입니다. 다음과 같은 임의의 형식을 사용할 수 있습니다. .sav, .data, 등. 별로 중요하지 않습니다. 둘 다 joblib 및 다음과 같은 대안 pickle 파일을 잘 읽을 것입니다.

사용법 - 피클 모듈

대안으로 joblib, 우리는 사용할 수 있습니다 pickle! 이것의 dump() 메소드는 목록을 이진 데이터 스트림으로 효율적으로 저장합니다. 먼저 출력 파일 listfile.data 이진 쓰기를 위해 열립니다("wb"). 둘째, 목록은 다음을 사용하여 열린 파일에 저장됩니다. dump() 방법:

import pickle

places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

with open('listfile.data', 'wb') as filehandle:
    
    pickle.dump(places, filehandle)

다음 단계로 다음과 같이 파일에서 목록을 읽습니다. 먼저 출력 파일 listfile.data 읽기용으로 열린 바이너리("rb"). 둘째, 장소 목록은 다음을 사용하여 파일에서 로드됩니다. load() 방법:

import pickle

with open('listfile.data', 'rb') as filehandle:
    
    placesList = pickle.load(filehandle)

여기에 있는 두 가지 예는 문자열의 사용법을 보여줍니다. 하지만, pickle 문자열, 숫자, 자체 정의 구조 및 Python이 제공하는 기타 모든 내장 데이터 구조와 같은 모든 종류의 Python 객체와 함께 작동합니다.

JSON 형식 사용

이진 데이터 형식 pickle 용도는 Python에만 해당됩니다. 다른 프로그램 간의 상호 운용성을 향상시키기 위해 JavaScript Object Notation(JSON)은 사용하기 쉽고 사람이 읽을 수 있는 스키마를 제공하므로 파일을 직렬화하고 API를 통해 공유하는 데 매우 인기가 있습니다.

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

다음 예는 혼합 변수 유형 목록을 출력 파일에 쓰는 방법을 보여줍니다. JSON 기준 치수. 쓰기를 위해 출력 파일을 연 후, dump() 메서드는 JSON 표기법을 사용하여 파일에 기본 목록을 저장합니다.

import json


basic_list = [1, "Cape Town", 4.6]


with open('listfile.txt', 'w') as filehandle:
    json.dump(basic_list, filehandle)

출력 파일의 내용을 메모리로 다시 읽는 것은 데이터를 쓰는 것만큼 간단합니다. 에 해당하는 방법 dump() ~ 라 불려진다 load():

import json


with open('listfile.txt', 'r') as filehandle:
    basic_list = json.load(filehandle)

결론

위에서 보여준 다양한 방법은 간단한 데이터 쓰기/읽기부터 피클 및 JSON을 사용하는 이진 스트림을 통한 데이터 덤프/로드까지 다양합니다. 이것은 목록을 지속적으로 저장하고 메모리로 다시 읽는 것을 단순화합니다.

타임 스탬프 :

더보기 스택카부스