데이터 분석/파이썬

파이썬 중급 - 텍스트 파일 열기/읽기/쓰기/닫기

김각도 2022. 10. 23. 17:22
반응형

 원하는 폴더명으로 폴더를 생성한 후, 파이썬으로 open(), read(), write(), close() 등을 이용하여 텍스트 파일을 다룰 수 있다.

 

# write() 함수를 이용하여 텍스트 파일에 문자열 쓰기

file = open('C/python/test.txt', 'w')            # w는 write의 약자

file. write('Hello World~')

file.close()

 여기서 주의할 점은 파일 경로를 역슬래쉬(\)가 아닌 슬래쉬(/)로 나타내야 하며, 해당 파일에 이미 데이터가 존재한다면 위와 같은 코드를 실행했을 경우 원래 있던 데이터는 모두 삭제되고, 파이썬으로 새롭게 실행시킨 데이터만 남아 저장된다. 또한, 텍스트 파일이므로 숫자 데이터를 넣을 경우는 str로 캐스팅 해주어야 하고 마지막에는 잊지 않고 close()를 작성하여 파일을 닫아주어야 한다.

 

# read() 함수를 이용하여 텍스트 파일의 문자열 읽기

file = open('C/pythonTxt/test.txt', 'r')                   # r은 read의 약자

file.read()

file.close()

 텍스트 파일의 문자열을 읽고, 특정한 문자열을 바꾸고 싶을 경우, replace 키워드를 사용할 수 있다.

 

# 텍스트 파일의 문자열을 읽은 후 특정 문자열 수정

file = open('C/pythonTxt/test.txt', 'r')

str = file.read()
str.replace('수정 전 문자열', '수정 후 문자열', n)                # n은 n번째 문자까지만 수정하겠다는 뜻 (생략가능)

file. close()

 

 파일의 모드는 어떤 목적으로 open할 지 정할 수 있다.

- 'w' : 쓰기 전용 (파일이 있으면 덮어씌움)
- 'a' : 쓰기 전용 (파일이 있으면 덧붙임)
- 'x' : 쓰기 전용 (파일이 있으면 에러 발생, 없으면 새로 생성)
- 'r' : 읽기 전용 (파일이 없으면 에러 발생)

 

 다음과 같이 with ~ as 문을 이용하여 파일의 닫기(close)를 생략할 수 있다.

with open('C/pythonTxt/test.txt', 'a') as f:
    f.write('study!')

with open('C/pythonTxt/test.txt', 'r') as f:
    print(f.read())

 

writelines()는 리스트 또는 튜플 데이터를 파일에 쓰기 위한 함수이다. writelines()를 쓰지 않는다면 for ~ in 을 이용하여
반복문을 작성해야 하지만, writelines()를 쓰면 코드를 더 간결하게 만들 수 있다.

languages = ['c', 'java', 'python']

with open('C/pythonTxt/test.txt', 'a') as f:
    f.writelines(languages)

위의 코드를 출력했을 때 깔끔하게 보이기 위해 개행을 하고 싶다면, 아래와 같이 작성할 수 있다.

    f.writelines(item + '\n' for item in languages)

 

read() 함수에도 마찬가지로 readlines()와 readline()이 있다. readlines()는 파일의 모든 데이터를 읽어서 리스트 형태로 반환하며, 개행까지도 코드로 반환해준다. readline()은 한 행을 읽어서 문자열로 반환해준다.

# readline()을 이용하여 모든 행 반환

with opne(('C/pythonTxt/test.txt', 'r') as f:
    line = f.readline()

    while line != '':
        print(f'line : {line}')
        line = f.readline()

반응형