[34-39] 파이썬 중급(텍스트 파일)

이재은·2024년 5월 14일

34강

1. 기본 함수

  1. 순서
    1) 텍스트 파일
    2) open()
    3) read () or write() 읽고 쓰기
    4) close()

  2. write
    file(변수) = open('C:/PythonTxt/test.txt', 'w')
    strCnt = file.write(dateStr + todaySchedule)
    print({strCnt})
    file.close()

35강

  1. read
    file = open('C:/PythonTxt/test.txt', 'r')
    str = file.read()
    print(f'str : {str}')
    file.close()
import time

lt = time.localtime()
# dateStr = '[' + str(lt.tm_year) + '년' + \
#     str(lt.tm_mon) + '월' + str(lt.tm_mday) +'일] '

# 요걸 더 빠르게 정리(str포맷함수)
dateStr = '[' + time.strftime('%Y - %m - %d %H:%M:%S %p') + ']'
dateStr = '[' + time.strftime('%Y - %m - %d %I:%M:%S %p') + ']'(시간오전오후구분)
time.localtime()
time.strtime()
str = str.replace('a', 'b', 2) : 앞에서부터 2개만 바꾼다.

36강

  1. 파일 모드
    w : 쓰기전용(파일이 있으면 덮어 씌움, 없으면 생성)
    a : 쓰기전용(파일이 있으면 덧붙임 , add, 보통 log 쌓을때)
    x : 쓰기 전용(파일일이 있으면 에러 발생, 즉 새로 만들어서 써야)
    r : 읽기 전용(파일이 없으면 에러 발생)
#uri로 간단화 하기 
uri = 'C:/PythonTxt/'

w 모드
file = open(uri + 'hello.txt', 'w')
file.write('hello python!!')
file.close()
- 실습 
계속 더하는 함수 
def writePrimeNumber(n) :
    file = open(uri + 'prime_numbers.txt', 'a')
    file.write(str(n)) #문자로 바꿔서 넣어주기 
    file.write('\n') #개행
    file.close()
    
inputNumber = int(input())
for num in range(2, (inputNumber + 1)) :
    flag = True
    for n in range(2, num):
        if num % n == 0 :
            flag = False
            break #나눠져 버리면 중단

    if flag :  #즉 중단이 안되고 계속 flag = true 이면,
        writePrimeNumber(inputNumber)

37강

  1. with~as : 파일 close 생략 가능
    with open('파일경로', '모드') as f:
    f.write() / print(f.read())
#,찍는 규칙을 번호와 길이로 정의함(~까지는 찍고 ~는 안찍고)
#순서 : 계속 돌면서 add하는 함수로 정의

import  random

uri = 'C:/PythonTxt/'

def writeNumbers(nums): #1
    for idx, num in enumerate(nums): #3
        with open(uri + 'lotto.txt', 'a') as f: #4
            if idx < len(nums) - 2 : 
            #6 #idx = 0, 1, 2, 3, 4 번일 때 (5번째까지) 
                f.write(str(num) + ', ') #5
            elif idx == len(nums) - 2 : #idx = 5 (6번째)
                f.write(str(num)) 
            elif idx == len(nums) - 1: #idx = 6 (7번째)
                f.write('\n')
                f.write(f'bonus :{str(num)}')
                f.write('\n')

rNums = random.sample(range(1, 46), 7) #2
print(f'{rNums}') #3

writeNumbers(rNums) 

38강

  1. writelines(반복가능객체)
    리스트(list) 또는 튜플데이터를 파일에 쓰기 위한 함수
languages = ['a', 'b', 'c', 'd', 'e']

uri = 'C:/PythonTxt/'

for item in languages :
    with open(uri + 'languages.txt', 'a') as f :
        f.write(item)
        f.write('\n')

with open(uri + 'languages.txt', 'a') as f :
    f.writelines(languages) #개행이 안됨

#개행 넣는 방법
with open(uri + 'languages.txt', 'a') as f :
    f.writelines(item + '\n' for item in languages)

#딕셔너리나 리스트 모양 그대로 기록하고 싶을 때
with open(uri + 'scoreDic.txt', 'a') as f :
    print(scoreDic, file = f )

39강

7.readlines()
파일의 모든 데이터를 읽어 리스트 형태로 반환, 개행도 읽어옴
readline()
한행을 읽어서 문자열로 반환

uri = 'C:/pythonTxt/'

with open(uri + 'lans.txt', 'r') as f:
    lanList = f.readlines() #모든걸 읽어서 리스트로 반환한다

print(f'lanList: {lanList}')
print(f'lanList type: {type(lanList)}')

★★★★★★★
uri = 'C:/pythonTxt/'

with open(uri + 'lans.txt', 'r') as f:
    line = f.readline()        

    while line != '':                               
        print(f'line: {line}', end='')   #프린트내 개행기능 수정 
        line = f.readline()
불러온 값을 수정하기 -split, strip
scoreDic = {}

uri = 'C:/pythonTxt/'
with open(uri + 'scores.txt', 'r') as f:
    line = f.readline()           

    while line != '':
        tempList = line.split(':') # 출력 : ['kor', '85\n']
        scoreDic[tempList[0]] = int(tempList[1].strip('\n')) #특스문자 날리고 그 날린 값과 키 : 밸류
        
        line = f.readline() #있어야 다음걸 불러와 무한재생을 막을 수 있음

print(f'scoreDic: {scoreDic}')
profile
Dare to be an optimist

0개의 댓글