파이썬(텍스트 파일 처리)

Variety_·2021년 10월 22일
0

Python

목록 보기
12/12

텍스트 파일


  • open(), read(), write(), close() 를 이용해 텍스트 파일을 다룬다.
  • 각각 이름 그대로 열기, 읽기, 쓰기, 닫기 역할을 수행한다.

open()을 통해 파일을 다양한 방식으로 열 수 있다.

'w' : 쓰기전용(파일이 있으면 덮어씌움)

'a' : 쓰기전용(파일이 있으면 덧붙임)

'x' : 쓰기전용(파일이 있으면 에러 발생)

'r' : 읽기전용(파일이 없으면 에러발생)

write()를 통해 파일 쓰기

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

# write는 글자개수를 int형으로 반환
# w모드는 기존에 있던 글 새로 덮어버림 
strCnt = file.write('Hello world~')
print(f"strCnt : {strCnt}")

# 외부자원 연결 해제 
file.close()

read()를 통해 파일 읽기

file = open('C:/pythonTxt/test.txt', 'r')
str = file.read()
print(f"str : {str}")
file.close()
  • strftime 을 통해 간단하게 형식 맞출 수 있음
  • %H를 하면 13시처럼 24시 기준, %I를 하면 오전, 오후 12시간을 기준으로 출력
import time

lt = time.localtime()
# p : AM/PM 
dateStr = time.strftime('%Y-%m-%d %H:%M:%S %p')
dateStr

with ~ as 문

  • with ~ as 문을 이용하면 파일 닫기(close)를 생략할 수 있다.
uri = "C:/pythonTxt/"

file = open(uri + 'hello.txt', 'a')
file.write("Hello")
file.close()

# 위의 내용을 with ~ as로 변경

with open(uri + "hello.txt", 'a') as f:
    f.write("안뇽~~")

writelines()

  • 반복 가능한 자료형의 데이터를 파일에 쓰자!
uri = "C:/pythonTxt/"

languages = ["c/c++", "java", "c#", "python", "javascript"]

for item in languages:
    with open(uri + 'languages.txt', 'a') as f:
        f.write(item)
        f.write('\n')
        
# for문 대신 writelines()를 사용!        

with open(uri + 'languages.txt', 'a') as f:
    f.writelines(languages)
# 개행 추가    
with open(uri + 'languages.txt', 'a') as f:
    f.writelines(item + '\n' for item in languages)
    
# 아래처럼 하면 score가 그대로 입력됨
score = {"kor" : 85, "eng" : 90}
with open(uri + "score.txt", 'a') as f:
    print(score, file=f)

readlines(), readlinse()

  • 여러줄 읽기와 한 줄 읽기
  • readlines() : 파일의 모든 데이터를 읽어서 리스트 형태로 반환한다.
  • readline() : 한 행을 읽어서 문자열로 반환 한다.
uri = "C:/pythonTxt/"

with open(uri + "lans.txt", 'r') as f:
    lanList = f.readlines()
print(f"lanList : {lanList}")

아래는 텍스트파일, 파이썬 실행결과 순이다

uri = "C:/pythonTxt/"

with open(uri + "lans.txt", 'r') as f:
    line = f.readline()
    
    while line != '':
        print(f"line : {line}")
        line = f.readline()

0개의 댓글