Data_Analysis_Track_33/Python_문제풀이
Python_04_문제풀이(입출력)
lsc99
2023. 8. 25. 18:47
문제 내용 : 간단한 터미널 기반 메모장
- 사용자로부터 파일명을 입력받는다.
- 사용자로부터 파일에 저장할 문장을 입력받아서 파일에 저장한다.
- 한줄씩 입력받는다.
- 사용자가 !q 를 입력하면 저장후 종료한다.
- 사용자가 저장한 파일을 읽어서 출력한다.
두가지 방식으로 풀어보았다.
1.
import os
os.chdir(r"C:\Users\Playdata\Desktop\01_Python") # 현재 작업 디렉토리 변경 (절대경로)
# 1. 파일명 입력
file_name = input('파일명을 입력하세요. : ')
# 2. 연결
os.makedirs("files", exist_ok = True)
fw = open("files/"+file_name, "wt", encoding = "utf-8") # 쓰기 모드
while True:
sentence = input('저장할 문장을 입력하세요. :')
if sentence == '!q':
break
else:
fw.write(f"{sentence}\n")
fw.close()
fr = open("files/"+file_name, "rt", encoding = "utf-8") # 읽기 모드
read_txt = fr.read()
print(read_txt)
fr.close()
2.
import os
os.chdir(r"C:\Users\Playdata\Desktop\01_Python") # 현재 작업 디렉토리 변경
# 1. 파일명 입력
file_name = input('파일명을 입력하세요. : ')
# 2. 연결
os.makedirs("files", exist_ok = True)
fw = open("files/"+file_name, "wt", encoding = "utf-8") # 쓰기 모드
sentence = [] # 빈 리스트 생성
while True:
txt = (input('저장할 문장을 입력하세요. :')) # 문자열 변수 저장
if txt == '!q': # !q 입력시 반복문 중단
break
else:
sentence.append(txt) # !q가 아닌 txt들 sentence리스트에 저장
for i in sentence:
print(i)
fw.write(i+"\n") # 파일에 리스트내용을 한줄씩 추가
fw.close()
- 강사님 버전
1.
#### 강사님 버전
os.makedirs("files", exist_ok=True) # 파일들을 저장할 디렉토리 생성
# 1. 파일명 입력
filename = input('저장할 파일명:')
file_path = os.path.join("files", filename)
print(file_path)
# 2. 연결
fw = open(file_path, "wt", encoding = "utf-8")
print("저장할 text를 입력하세요. : ")
# 3. !q가 입력될때까지 출력
while True:
line = input(">>>")
if line == "!q":
break
fw.write(line+"\n") # input() 은 엔터는 읽지 않는다. 그래서 뒤에 엔터를 추가
# fw.write() -> buffer(임시저장소)에 출력
fw.flush() # buffer 내용을 연결된 자원에 출력
print("종료")
# 4. close (종료)
# fw.close()
2. with block 활용
# 강사님 버전
os.makedirs("files", exist_ok=True) # 파일들을 저장할 디렉토리 생성
filename = input('저장할 파일명:')
file_path = os.path.join("files", filename)
# with block 구현
with open(file_path, "wt", encoding = "utf-8") as fw:
print("저장될 내용을 입력하세요.")
while True:
# 한줄 읽기
line_txt = input(">>>")
# !q가 입력되면 종료
if line_txt == "!q":
break
# 파일 출력
fw.write(line_txt + "\n")
# with block 종료시 close는 자동으로 처리
print('종료')
3. 모듈 및 함수화
%%writefile simple_memo.py
import os
# 강사님 버전, 함수화
def simple_memo():
os.makedirs("files", exist_ok=True) # 파일들을 저장할 디렉토리 생성
filename = input('저장할 파일명:')
file_path = os.path.join("files", filename)
# with block 구현
with open(file_path, "wt", encoding = "utf-8") as fw:
print("저장될 내용을 입력하세요.")
while True:
# 한줄 읽기
line_txt = input(">>>")
# !q가 입력되면 종료
if line_txt == "!q":
break
# 파일 출력
fw.write(line_txt + "\n")
# with block 종료시 close는 자동으로 처리
print('종료')
if __name__ == "__main__": # import 실행이나닌 main 모듈로서의 실행만 가능하도록(shell에서의 실행도 가능하다.)
simple_memo()
from simple_memo import simple_memo as s_memo
s_memo()