File System: OS에서 파일을 저장하는 트리구조 저장체계
f = opne("file_name.txt", "r")
contents = f.read()
print(contents)
f.close()
with open("untitled.txt",'r', encoding='UTF8') as f:
contents = f.read()
print(contents)
print("----")
print(contents.split("\n")[1])
with open("untitled.txt",'r', encoding='UTF8') as f:
content_list = f.readlines()
print(content_list[1])
with를 이용하면 인덴트 영역 안에서만 사용가능하다. f.close 없어도 된다.
1번에 1줄만 읽기
with open("untitled.txt",'r', encoding='UTF8') as f: while True: line = f.readline() if not line: break print(line)
파일 쓰기
write 모드로 쓰기
f = open("write.txt", 'w', encoding='utf8') for i in range(1, 11): data = "{0} 번째 줄입니다.\n".format(i) f.write(data) f.close()
append 모드로 쓰기
f = open("write.txt", 'a', encoding='utf8') for i in range(11, 21): data = "{0} 번째 줄입니다.\n".format(i) f.write(data) f.close()
import os
os.mkdir("log")
"log" 폴더가 생성된다.
try:
os.mkdir("log")
except FileExistsError as e:
print("file already exists")
os.path.exists("log")
os.path.isfile("untitled.txt")
파일을 이동시키거나 복사할 수 있다.
import shutil
source = "untitled.txt"
dest = os.path.join("log")
shutil.copy(source, dest)
os.path.join
을 이용하면 현재 경로에 경로 추가가 쉽다. 맥과 윈도우는 sep이 다르기때문.
요즘엔 pathlib을 이용해 path를 객체로 다룸
import pathlib
cwd = pathlib.Path.cwd()
list(cwd.parents)
[WindowsPath('C:/Users/user/python'),
WindowsPath('C:/Users/user'),
WindowsPath('C:/Users'),
WindowsPath('C:/')]
파이썬의 객체는 메모리에 있어야한다.
import pickle
f = open("list.pickle", "wb")
test = [1, 2, 3, 4, 5]
pickle.dump(test, f)
f.close()
del test # test 객체를 list.pickle에 저장한 후 삭제한다.
f = open("list.pickle", "rb") #list.pickle로부터 로드
test_pickle = pickle.load(f)
print(test_pickle)
다른 객체들도 pickle을 이용해 영속화 가능
class Hello:
def __init__(self, a, b):
self.a = a
self.b = b
def bye(self):
print('goodbye')
f = open("list.pickle", 'wb')
hello = Hello(10, 20)
pickle.dump(hello, f)
del hello
f.close()
피클에 저장 후 로드
f = open("list.pickle", 'rb')
hello2 = pickle.load(f)
hello2.bye()
hello2.a
결과
goodbye
10
로그 남기기
프로그램이 실행되는 동안 일어나는 정보를 기록 남기기
유저의 접근, Exception, 특정 함수의 사용 등
DB, 콘솔 출력
로그 분석을 통해 의미있는 결과 도출 가능
import logging
logging.debug("틀림")
logging.info("info")
logging.warning("warn")
logging.error("error")
logging.critical("critical")