본문 바로가기
Study/Python

[기초문법] 파일의 읽고 쓰기

by 까망우동 2023. 3. 6.
반응형

Index

    Python 에서는 사용자가 직접 입력하고 터미널에 결과값을 출력하는 방식 외에도, 파일을 통해 입출력 할 수 있다. 파일을 새로 만든 다음, 프로그램이 만든 결과값을 새 파일에 적어보고, 적은 내용을 읽고, 새로운 내용을 추가해보는 것 까지 해보자. 

     

    1. 파일 생성하기

    • Python 에서 파일 생성은 아래와 같이 open 함수를 통해 생성한다 : 파일 객체 = open(파일 이름, 파일 열기 모드)
    • 한글을 쓰려면 꼭 encoding="utf8" 넣어줘야한다.
    • 아래 예시코드를 실행하면, new_file 이라는 text 파일에 아래 3개 줄이 출력되겠다. 

     

    f = open('new_file.txt', 'w', encoding='utf8')
    print("파일에 글을 써볼게", file=f)
    print("한줄 더 써볼게", file=f)
    
    f = open('new_file.txt', 'a', encoding='utf8')
    f.write("이건 기존 파일에 덛붙여 쓰는거야")
    
    f = open('C:/sbspace/neww__file.txt','w') #파일을 특정 디렉토리에 생성하고 싶을때

     

    • 파일 열기 모드에는 아래와 같이 3가지가 있다. (열기모드를 입력하지 않으면 r 이 티폴트다) 
    • 파일을 쓰기 모드로 열면 해당 파일이 이미 존재할 경우 원래있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다

     

    r 읽기모드 - 파일을 읽기만 할 때 사용
    w 쓰기모드 - 파일에 내용을 쓸 때 사용
    a 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용

     

    파일 경로와 슬래시(/) - 3가지 방법

    파이썬 코드에서 파일 경로를 표시할 때 "C:/doit/새파일.txt" 처럼 1. 슬래시(/)를 사용할 수 있다. 만약 역슬래시(\)를 사용한다면 "C:\\doit\\새파일.txt" 처럼 2. 역슬래시를 2개 사용하거나 r"C:\doit\새파일.txt"와 같이 문자열 앞에 3. r 문자(Raw String)를 덧붙여 사용해야 한다. 왜냐하면 "C:\note\test.txt"처럼 파일 경로에 \n과 같은 이스케이프 문자가 있을 경우 줄바꿈 문자로 해석되어 의도했던 파일 경로와 달라지기 때문이다.  

     

    2. 파일을 쓰기 모드로 열어 내용 쓰기

    파일을 쓰는 방법은 아래와 같이 2가지가 있다고 볼 수 있다. write 혹은 print(file) 함수를 활용하기

    f = open("새파일.txt", 'w', encoding='utf8')
    for i in range(1, 11):
        # 1. write 로 쓰기
        data = "{}번째 줄입니다.\n".format(i)
        f.write(data)
        # 2. print 로 쓰기 
        print("{}th row".format(i), file=f)
    f.close()

     

    3. 파일을 읽는 여러가지 방법

        3-1. readline 함수 이용하기

    readline() 호출할때마다 한줄씩 읽는다. 

    f = open("새파일.txt", 'r', encoding='utf8')
    line = f.readline()
    print(line) #첫번째 줄 출력
    line = f.readline()
    print(line) #두번째 줄 출력 
    f.close()

    만약 모든 줄을 읽고 싶다면?

    while True:
        line = f.readline()
        if not line: break
        print(line)

     

      3-2. readlines 함수 사용하기

    readlines 함수는 파일의 모든 줄을 읽어서 각각의 줄을 아이템으로 갖는 리스트를 반환한다.

    파일을 읽을 때 줄 끝의 줄 바꿈(\n) 문자를 제거하고 사용해야 할 경우가 많다. 

    아래 예시코드의 주석처럼 strip 함수를 사용하면 줄 바꿈 문자를 제거할 수 있다.

    f = open("새파일.txt", 'r', encoding='utf8')
    lines = f.readlines()
    for line in lines:
    	line = line.strip() # 줄 끝의 줄 바꿈 문자를 제거한다. 
        print(line)
    f.close()

     

        3-3. read 함수 사용하기

    read 함수는, 파일에 있는 내용 전체를 문자열 타입으로 리턴한다. 

     

        3-4. 파일 객체를 for문과 함께 사용하기 

    사실 파일은 간단하게 for 문과 함께라면 굳이 readline 과 같은 함수 사용없이 파일을 줄단위로 읽을 수 있다. 

     

    with open('새파일.txt', 'r', encoding='utf8') as nf:
    
        for line in nf:
            print(line)
        nf.close()

     

    4. 파일에 새로운 내용 추가하기 

     

     

    5. with문과 함께 사용하기 

     

     

    반응형

    댓글