with open("filename.txt", "r") as my_file:
contents = my_file.read()
print(type(contents), contents)
File Write
mode=“w”
encoding
맥 / 리눅스: utf8
한글 윈도우: cp949
f = open("count_log.txt", 'w', encoding="utf8")
for i in range(1, 11):
data = "%d번째 줄입니다.\\n" % i
f.write(data)
f.close()
mode=”a”
with open("count_log.txt", 'a', encoding="utf8") as
f: for i in range(1, 11):
data = "%d번째 줄입니다.\\n" % i
f.write(data)
02-3 Directory Handling
OS 모듈 활용
directory 생성
import os
os.mkdir("log") # log라는 이름의 directory 생성
directory가 있는지 확인
import os
os.path.exists("log") # log directory가 있으면 True
shutil 모듈 활용
파일 복사
import shutil
source = "i_have_a_dream.txt"
new = os.path.join("abc", "jieun.txt") # os.path.join: 경로 연결
shutil.copy(source, new) # source를 new로 복사
cf. 왜 abc\\jieun.txt라고 쓰지 않고 os.path.join 함수를 사용할까?
os마다 경로 지정 방식이 다르기 때문 !
pathlib 모듈 활용
현재 directory / 상위 directory 확인
import pathlib
cwd = pathlib.Path.cwd() # cwd(): current working directory
cwd.parent # 현재 directory의 상위 directory
log 파일 생성하기
# 로그 파일 생성
import os
if not os.path.isdir("log"): # log 디렉토리 존재 여부 확인
os.mkdir("log")
if not os.path.exists("log/count_log.txt"): # count_log.txt 파일 존재 여부 확인
f = open("log/count_log.txt", "w", encoding="utf8")
f.write("기록이 시작됩니다\\n")
f.close()
# 로그 기록
with open("log/count_log.txt", "a", encoding="utf8") as f:
import random, datetime
for i in range(1, 11):
stamp = str(datetime.datetime.now())
value = random.random()*1000000
log_line = stamp + "\\t" + str(value) + "값이 생성되었습니다" + "\\n"
f.write(log_line)
pickle
파이썬의 객체를 영속화(persistence)하는 built-in 객체
객체는 메모리에 저장되므로 파이썬 인터프리터가 종료되면 객체도 사라짐
→ 파이썬 인터프리터 종료 이후에도 다시 객체를 사용하기 위하여 pickle을 사용
import pickle
# pickle file 생성
f = open("list.pickle", "wb") # wb: write binary
test = [1, 2, 3, 4, 5]
pickle.dump(test, f)
f.close()
# 생성한 pickle file 불러와서 사용
f = open("list.pickle", "rb") # read binary
test_pickle = pickle.load(f)
print(test_pickle). # [1, 2, 3, 4, 5]
f.close()
03 Log Handling
03-1 Logging
Logging
프로그램이 실행되는 동안 발생되는 정보를 기록으로 남기기
프로그램이 실행되는 동안 발생되는 정보: 유저의 접근, 프로그램의 exception, 특정 함수의 사용 등
댓글