2020.11.11 일지

0후·2020년 11월 11일
0

비트캠프

목록 보기
18/112

오늘의 요약

오늘 배운 것 중에는 파일 CRUD(create, read, update, delete) 가 가장 중요하다.

# 파일 권한 & 파일 생성 

"r" : Read
"a" : Append 
"w" : Write
"x" : Create 

"t" : Text 
"b" : Binary # 텍스트를 제외한 모든 파일

file_create.py

# 파일 생성 
f = open("a.txt", "xt") 
f = open("aa.dump", "xb") 
print("파일 생성 완료")
print()

file_write.py

# 파일 쓰기 
f = open("b.txt", "a") #추가
f.write("추가되는 문자열")
f.close()

f = open("b.txt", "w") #쓰기 
f.write("덮어쓴 문자열")
f.close()

file_read.py

# 상대경로로 파일읽기
#f = open("a.txt", "rt") # "rt"는 default 권한 
f = open("b.txt", "r") # 읽기 
print(f.read())
print()

# 절대경로로 파일읽기
f = open("C:\\PYH\\00_java\\00_java\\day015\\00_temp\\수스자바.java", "r") # 읽기
print(f.read())
print("######################")

f = open("C:\\PYH\\00_java\\00_java\\day015\\00_temp\\수스자바.java", "r") # 읽기
print(f.read(5)) #캐릭터(문자) 갯수 만큼 

file_delete.py

# (1) 파일 삭제
import os

if os.path.exists("aa.dump"):
    print("해당 파일 존재")
    os.remove("aa.dump")
else: 
    print("해당 파일 없음")
print()

# (2) 디렉토리 삭제 
if os.path.exists("삭제될폴더"):
    print("해당 폴더 존재")
    os.rmdir("삭제될폴더")
else: 
    print("해당 폴더 없음")
print()

file_directory_delete.py (하위 디렉토리 전체삭제)

import os

def listDir(dir):
    fnames = os.listdir(dir)
    #print(fnames)
    for fname in fnames:
        if os.path.isfile(fname):
            print("[File]", fname)
        else:
            print("[Dir]", fname)    

def removeSubFiles(dir):
    fnames = os.listdir(dir)
    for fname in fnames:
        full_fname = os.path.join(dir, fname)
        #print(full_fname)        
        if os.path.isfile(full_fname):
            os.remove(full_fname)
        else:
            fnames = os.listdir(full_fname)
            if len(fnames)==0:
                os.rmdir(full_fname)
            else:
                removeSubFiles(full_fname)          
    os.rmdir(dir) 


target = "삭제될폴더"
if os.path.exists(target):
    listDir(target) # (1) 디렉토리 하위 리스팅 
    removeSubFiles(target) # (2) 디렉토리 하위 삭제
    os.rmdir(target) # (3) 자신의 디렉토리 삭제
else:
    print("'삭제될폴더' 없음")

typing_game.py

#(1) 파일을 연다 
fname = "original.txt"
f = open(fname, "r")
#print(f.read())
#print(f.readlines())
#print(f.readline())

#(2) 파일을 읽어서 set에 담는다
#s = {} # 기본값이 dict으로 인식 
s = set()
while True:
    line = f.readline()
    if not line: break # 상당히 중요함
    line = line.strip()
    #print(line)
    s.add(line)
f.close()

#(3) set를 list로 이동시킨다
li = []
for x in s:
    li.append(x)
#print(li)

#(4) 랜덤한 문제를 출력한다
import random
q = random.choice(li)
#print(q)

#(5) 그 문제와 타이핑한 내용을 비교하여 통과하거나 다시 도전하게 한다 
#(6) 게임시간을 체킹하여 걸린시간을 출력해준다
print("[타자 게임!! 준비되면 엔터!!]")
input()

import time
start = time.time()
print(start)

# 게임 진행 
n = 1 #문제번호 
while n<=3:
    print("#문제", n)
    print(q)
    x = input()
    if q == x:
        print("통과!")
        n+=1
        q = random.choice(li)
    else:
        print("오타! 다시 도전!")

end = time.time()
print(end)
et = end - start
et = format(et, ".2f")
print("타자시간: ", et , "초")

알게된 개념

  • os.path.join : 해당 OS 형식에 맞도록 입력 받은 경로를 연결한다. 입력 중간에 절대 경로가 나오면 이전에 취합된 경로는 제거하고 다시 연결한다.
  • lambda식은 기존의 식을 조금 더 다양하게 만드는 데 있다.
  • self는 클래스 정의 시에 사용함
  • 오버라이딩의 개념이 자바랑 약간 다름
  • 파이썬에서는 None 자바에서는 null이다.
profile
휘발방지

0개의 댓글