d

Python | Read/Write a file

Python으로 file을 읽고 쓰는 방법을 설명합니다.
가장 많이 사용되는 예제코드 위주로 정리하였습니다.

1. Text 파일 읽기 - 파일 전체를 읽기

다음과 같이 open("abcd.txt", "r")를 이용하여 file stream을 생성하고, .read( )를 통하여 파일 전체를 한번에 읽을 수 있습니다.
(file stream을 생성한다는 것은 파일에 접근할 수 있는 연결고리를 만든다는 의미입니다.)
여기서 "abcd.txt"는 읽을 파일 이름을 포함한 전체 경로를 의미하며 절대경로 및 상대경로를 사용할 수 있습니다.
"r"은 read mode 를 의미합니다.

Text 파일 읽기 | 파일 전체를 읽기

with open("abcd.txt", "r") as f:
    content = f.read()
    print(content)

위 코드는 with 문법을 사용했기 때문에 with절이 끝나는 지점에서 file stream이 자동 해제 됩니다.
따라서, .close( )가 필요하지 않습니다.

2. Text 파일 읽기 - 줄 단위로 읽기

.readlines()은 개행문자('\n')를 기준하여 줄 단위로 읽어 List 로 Return합니다.
따라서, lines 의 값 예시는 ['line 1\n', 'line 2\n', 'line 3'] 입니다.

Text 파일 읽기 | 줄 단위로 읽기

with open("abcd.txt", "r") as f:
    lines = f.readlines()
    print(lines)

만일, 줄단위로 처리해야 한다면 다음과 같이 코드를 작성할 수 있습니다.

Text 파일 읽기 | 한 줄씩 처리하기

with open("abcd.txt", "r") as f:
    lines = f.readlines()
    
    for line in lines:
        print(line)

3. Binary 파일 읽기

다음과 같이 읽기 모드를 "rb"로 설정하고, .read()를 통하여 Binary 파일을 읽습니다.
Binary 모드로 읽는 다는 것은 파일의 원본 데이터 그대로 읽는 것입니다.
Text file이 아닌 경우는 대부분 Binary 모드로 읽는 경우가 많습니다.

Binary 파일 읽기

with open("abcd.png", "rb") as f:
    bin = f.read()
    print(bin)

4. 새 파일에 쓰기 / 기존 파일에 덮어쓰기

다음 코드는 "aaaa.txt" 파일을 "w"(=write mode) 모드로 file stream을 열고, .write( )를 통하여 값을 쓰는 것입니다.
'aaaa.txt' 파일이 존재한다면 덮어쓰고, 존재하지 않으면 새로 생성합니다.

덮어쓰기

with open("aaaa.txt", "w") as f:
    f.write('hello world!')

여러 줄을 쓰기하려면 다음과 같이 코드를 작성할 수 있습니다.

덮어쓰기

data = ['line1', 'line2', 'line3']
with open("aaaa.txt", "w") as f:
    for line in data:
        f.write(line + '\n')

5. 기존 파일에 이어붙여 쓰기

다음 코드는 "aaaa.txt" 파일을 "a"(=append mode) 모드로 file stream을 열고, .write( )를 통하여 값을 이어붙여 쓰는 것입니다.

기존 파일에 이어붙여 쓰기

with open("aaaa.txt", "a") as f:
    f.write('hello world!\n')

6. Binary 파일 쓰기

다음과 같이 읽기 모드를 "wb"로 설정하고, .write()를 통하여 Binary 파일로 저장합니다.

Binary 파일 쓰기

with open("abcd.png", "wb") as f:
    bin = f.write(b'\x01\x02')