본문 바로가기
Python/Python 개념

파이썬 파일 처리하기

by hyun-am 2020. 12. 7.

파이썬 파일 처리하기

 

파이썬에서는 파일을 처리하기 매우 쉽고 편합니다. 파일입출력을 통해 파일에 있는 글을 읽어서 입력을 하고 또한 결과값을 메모장과 같은 파일에 저장하는 프로그램을 만들 수 있습니다. 

 

먼저 파일을 생성하기 위한 간단한 코드를 살펴 보겠습니다. 

파일 객체 = open(파일 이름, 파일 열기 모드, encoding)

## 예시
f = open('test001.txt','w',encoding="utf8")

여기서 'w'는 파일을 쓰기위한 쓰기 모드입니다. 

파일 열기 모드에는 다음과 같은것들이 있습니다.

파일 열기 모드 설명
r 읽기 모드 - 파일을 읽기만 할 때 사용
w 쓰기 모드 - 파일에 내용을 쓸 때 사용
a 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용
r+ 읽기와 쓰기 모드
t 텍스트 모드
b 바이너리모드

표 참고 - 점프 투 파이썬(wikidocs.net/book/1)

 

파일 처리를 위한 메서드들

read()

 

read(size) 메서드는 size만큼의 내용을 읽고, 문자열로 반환합니다.(python3에서는 텍스트 모드의 경우 문자열, 바이너리모드일 경우 바이트 객체를 반환합니다.)

만약 파일 끝에 도달하면 read()메서드는 빈 문자열을 반환합니다.

f.read()

## 출력 값
# 파일 안에 있는 전체 내용

 

readline()

 

readline()는 파일에서 한 줄을 읽습니다. 개행 문자는 문자열의 끝에 남아있고, 파일의 마지막 행에서만 생략이 됩니다. 

 

readlines()

 

readlines()는 파일의 모든 데이터 행을 포함한 리스트를 반환합니다. readlines(size)이런식으로 size를 지정하면 해당 바이트 수 만큼 읽고, 한 행을 완성하는데 필요한 만큼 더 읽어서 반환합니다. 

f.readlines()

## 출력값
# ['라인 1\n','라인 2\n','라인 3\n']

 

write()

 

write()는 데이터를 파일에 쓰고, None을 반환합니다. 바이너리 모드에서는 바이트 배열, 텍스트 모드에서는 문자열 객체를 사용합니다.

f.write('파일에 글자 입력\n')

 

close()

 

close()는 파일을 닫고, 열린 파일이 차지하는 시스템 자원을 해제합니다. 파일을 성공하면 True를 반환합니다.

 

with문

 

with문은 파이썬 2.5부터 추가된 기능인데 with문 블록을 벗어나는 순간 객체를 자동으로 close를 시켜줍니다. 사용 예시는 다음과 같습니다.

with open("test.txt","w") as f:
    f.write("테스트 입력")

 

파일 입출력 사용 예시

파일 입출력 사용 예시입니다. 파일을 읽어서 빈줄을 모두 제거하는 코드입니다.

 

import sys


def read_data(filename):
    lines = []
    with open(filename) as fh:
        for line in fh:
            if line.strip():
                lines.append(line)
            return lines


def write_data(lines, filename):
    fh = None
    with open(filename, "w") as fh:
        for line in lines:
            fh.write(line)


def remove_blank_lines():
    if len(sys.argv) < 2:
        print("Usage: python {0}[file ...]".format(sys.argv[0]))

    for filename in sys.argv[1:]:
        lines = read_data(filename)
        if lines:
            write_data(lines, filename)


if __name__ == "__main__":
    remove_blank_lines()

 

코드 참고 : 파이썬 자료구조와 알고리즘(www.hanbit.co.kr/media/books/book_view.html?p_code=B8465804191)

 

 

다음과 같은 test.txt파일을 만들겠습니다.

 

이제 다음과 같은 명령어로 코드를 실행시키겠습니다.

 

다음과 같이 빈 공백이 삭제가 된 것을 확인할 수 있습니다. 

 

'Python > Python 개념' 카테고리의 다른 글

파이썬 디자인 패턴 - 1  (2) 2020.12.09
파이썬 클래스와 객체  (0) 2020.12.09
파이썬 반복과 이터레이터  (0) 2020.09.22
파이썬 자료구조(심화)-2  (0) 2020.09.17
파이썬 자료구조(심화)-1  (0) 2020.09.16

댓글