순서
1) 텍스트 파일
2) open()
3) read () or write() 읽고 쓰기
4) close()
write
file(변수) = open('C:/PythonTxt/test.txt', 'w')
strCnt = file.write(dateStr + todaySchedule)
print({strCnt})
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개만 바꾼다.
#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)
#,찍는 규칙을 번호와 길이로 정의함(~까지는 찍고 ~는 안찍고)
#순서 : 계속 돌면서 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)
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 )
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}')