-
Python: with open() 파일 읽기(read), 쓰기(write), 덧붙히기(append), strip(), split() 함수란?Python 2020. 6. 30. 14:34
파일을 읽고 쓰기전에 필수적으로 알아야 하는 함수가 있습니다.
그래서 그 함수들부터 먼저 알아보도록 해보겠습니다.
1. strip()
strip() 메서드는 앞뒤의 공백, 즉 앞뒤의 모든 화이트 스페이스들을 없애주는 기능을 합니다.
print(" \n hello Panda \n \t ") print(" \n hello Panda \n \t ") print("-----------------------------------------") print(" \n strip hello Panda \n \t ".strip()) print(" \n strip hello Panda \n \t ".strip())
hello Panda hello Panda ----------------------------------------- strip hello Panda strip hello Panda
2. split()
split() 함수는 문자열을 어떤 한 기준으로 나누어 줍니다.
name_panda = "이름: 판다" name_data = name_panda.split(":") # ":"를 기준 print(name_data) name_panda = "이름: 판다" name_data = name_panda.split(": ") # ": "를 기준 print(name_data)
['이름', ' 판다'] ['이름', '판다']
strip으로 " 판다" 앞 공백을 없앨 수도 있지만
더 쉬운 방법은 보기에서처럼 나누어줄 때 화이트 스페이스(" ")까지 이용하는 것입니다.
3. 파일 읽기(read)
파일을 읽기전에 미리 준비해둔 txt 파일을 프로젝트안에 넣어줍니다.
Apple Banna Call Drive Egg
<practice.txt>
with open('practice.txt', 'r') as f: # 'r'은 read의 약자 # 만약 디렉토리 안에 파일을 만들고 싶다면 # with open('디렉토리 파일명/practice.txt', 'r') as f: print(type(f)) for line in f: print(line.strip()) # txt 파일안에 엔터(\n)가 있기 때문에 strip을 통해서 화이트 스페이스를 없애줍니다.
Apple Banna Call Drive Egg
4. 파일 쓰기(write)
with open("data/new_file.txt", "w") as f: # 'w'는 write의 약자 # data 디렉토리안에 new_file.txt 파일을 생성합니다. f.write("hello world\n") f.write("hello Panda\n") # 쓰고 싶은 내용 입력
hello world hello Panda
<new_file.txt>
5. 파일 내용 추가하기(append)
with open("data/new_file.txt", "a") as f: # 'a'는 append의 약자 # data 디렉토리안에 new_file.txt 파일에 내용을 추가합니다. # 만약 new_file.txt 파일이 없다면 파일을 생성하고 내용을 추가합니다. f.write("new hello world\n") f.write("new hello Panda\n") # 쓰고 싶은 내용 입력
hello world hello Panda new hello world new hello Panda
<예제>
영어 단어장을 만들고 랜덤하게 나오는 문제 만들기
1) 파일 쓰기
# 영어 단어장 딕셔너리 만들기 voca = {} while True: word_english = input("영어 단어를 입력하세요 ") if word_english == 'q': break word_korean = input("한국어 뜻을 입력하세요 ") if word_korean == 'q': break voca[word_english] = word_english # 영어 단어장 딕셔너리로 영어 단어장 파일 만들기 with open("data/vocabulary.txt", 'w') as f: for key, value in voca.items(): f.write("{}: {}\n".format(key, value))
영어 단어를 입력하세요 apple 한국어 뜻을 입력하세요 사과 영어 단어를 입력하세요 banna 한국어 뜻을 입력하세요 바나나 영어 단어를 입력하세요 panda 한국어 뜻을 입력하세요 판다 영어 단어를 입력하세요 secret 한국어 뜻을 입력하세요 비밀 영어 단어를 입력하세요 q Process finished with exit code 0
2) 파일 읽기
import random # 파일에서 데이터를 가져와 랜덤으로 문제 만들기 voca = {} data = 0 # 영어단어의 수 with open("data/vocabulary.txt", 'r') as f: for line in f: word = line.strip().split(": ") # 앞뒤 화이트 스페이스를 제거한 후 ": "를 기준으로 나눈다. voca[word[0]] = word[1] # word[0] 에는 영어 단어 # word[1] 에는 한국어 뜻 data += 1 while True: answer_index = rand.randint(0, data - 1) #랜덤한 인덱스를 만들어낸다. keys = list(voca.keys()) my_word = input("{}: ".format(keys[answer_index])) if my_word == voca[keys[answer_index]]: print("맞았습니다!") elif my_word == "q": break else: print("틀렸습니다.")
panda: 판다 맞았습니다! banna: 바나나 맞았습니다! panda: 사과 틀렸습니다. banna: 는 맛있어 틀렸습니다. secret: 비밀 맞았습니다! banna: q Process finished with exit code 0
반응형'Python' 카테고리의 다른 글
Python: 객체지향언어? 클래스(class)? 기초 공부하기! (0) 2020.08.15 Python: 파이썬으로 로또를 만들어보자! (0) 2020.06.30 Python: 모듈 import하고 표준 라이브러리 모듈 사용해보기! (feat. math, random, datetime) (0) 2020.06.30 Python: 에일리어싱(Aliasing) (1) 2020.06.29 Python: 딕셔너리(Dictionary) 사전 기능! (0) 2020.06.29