[Python] 리스트 csv로 저장,불러오기

반응형
    반응형

    리스트를 저장하는 방식은 pickle이 가장 유명한데 pickle은 갱신이 안되고 덮어쓰는 것만 됩니다. 만약 갱신한 리스트를 저장하고 싶다면 파일을 덮어쓰던가 새로운 파일로 저장해야 합니다. 그렇지만 csv로 저장하면 갱신이 가능합니다. pickle이 아닌 csv로 저장하는 방법에 대해 알려드립니다.
    pickle에 대한 방법은 다음 포스팅을 참고하시기 바랍니다.
    [Python] 딕셔너리,리스트 저장하기(pickle)

     

    [Python] 딕셔너리,리스트 저장하기(pickle)

    코딩을 해서 어떤 데이터를 리스트나 딕셔너리를 만들었을 때 그것을 따로 저장하지 않고 나중에 다시 작업을 하면 컴퓨터가 코딩작업을 다시 하게 되어서 기다리는 시간이 생기게 됩니다 시간

    seong6496.tistory.com

    리스트를 csv로 저장하기

    새로운 파일 생성 or 덮어쓰기

    새로운 파일을 만들어 넣을 때 파이썬 파일 모드 w로 해서 저장합니다.
    파일 덮어쓰기를 할때도 w를 씁니다.

    import csv
    item = ["A","B","C"]
    with open('list_to_csv.csv','w',newline='') as f:
            writer = csv.writer(f)
        writer.writerow(item)

    newline은 줄바꿈시 어떤 것으로 할 것인지 정해줍니다. 자신이 원하는 것으로 바꿔주면 됩니다.

    기존 파일에 내용 추가하기

    기존 파일에 내용을 추가하려면 a모드로 해서 저장합니다.
    파일이 없다면 다시 만들어지긴 합니다.
    w와 a의 차이는 기존 파일이 있다면 덮어쓸것인지 갱신을 할 것인지 여부를 결정짓는 것이라 할 수 있습니다.

    item2 = ['D','E','F']
    with open('list_to_csv.csv','a',newline='') as f:
        writer = csv.writer(f)
        writer.writerow(item2)

    csv 내용을 다시 리스트로 불러오기

    위에서 소개한 writer를 사용하면 리스트가 csv로 저장될 때 리스트를 통째로 row 에 넣는 방식으로 저장됩니다. 그래서 불러올 때도 통째로 불러와집니다. 이를 이용해 리스트로 다시 가져오면 됩니다.
    불러올 때는 csv의 reader 메쏘드를 씁니다.

    실제로 print를 해보면 리스트 그대로 저장되었다는 것을 알 수 있습니다.

    with open('list_to_csv.csv','r',newline='') as f:
        reader = csv.reader(f)
        for row in reader:
            print(row)

    csv 불러오기

    그러니 리스트의 extend 기능을 이용해 리스트 원소를 추가적으로 저장하는 방식으로 리스트를 가져옵니다. append를 이용하면 리스트 통째로 추가가 되니 때에 따라서는 유용할 수 있습니다. 

    extend

    item_load = []
    with open('list_to_csv.csv','r',newline='') as f:
        reader = csv.reader(f)
        for row in reader:
            item_load.extend(row)
    item_load

    리스트 extend

    append

    item_load2 = []
    with open('list_to_csv.csv','r',newline='') as f:
        reader = csv.reader(f)
        for row in reader:
            item_load2.append(row)
    item_load2

    리스트 append

    마치며

    csv를 판다스로 불러오는 방법도 생각했지만 writer로 저장한 csv는 1열부터 저장되고 판다스로 불러오면 1열은 항상 column으로 인식하므로 판다스를 염두해두고 csv로 저장하지 않으면 손이 더 많이 가는 것을 느꼈습니다. 자신이 무엇으로 만들것인지 잘 생각해보고 작업을 하는게 효율적인 방법임을 느낄 수 있을겁니다.


    관련 포스팅
    [Python] 딕셔너리,리스트 저장하기(pickle)
    [Python] 리스트 다루기(생성,추가,인덱싱)
    [Pandas] CSV 저장,불러오기

    [Python/기초] - 파이썬 파일모드(파일 읽기,쓰기,추가)

    댓글

    Designed by JB FACTORY

    ....