파일 입출력
파이썬 상에서 새로운 파일을 만들 수 있다.
score_file = open ("score.txt", "w", encoding="utf8")
score.txt = 파일명
"w" = 쓰기 목적
encoding = "utf8" ... 한글을 쓸 때는 항상 쓰는 것을 추천.
print("수학 : 0", file=score_file)
=> string으로 입력해준 파일명이 아닌 변수명으로 입력해주어야한다.
score_file.close() ... 항상 닫는 것까지!!
이렇게 새로운 txt 파일이 생성된 것을 확인할 수 있다.
print()를 실행해도 터미널에는 출력되지 않는다.
생성된 파일에 추가로 입력하기
"w"로 쓰면 해당 파일에 덮어쓰기가 된다.
따라서 "a"(append)로 뒤에 내용을 추가해준다.
encoding = "utf8" 은 그대로 똑같이 붙여준다.
여기선 print()가 아닌
score_file.write() 안에 string을 적어준다.
print()와 다르게 별도 줄바꿈이 없으므로
\n 으로 줄바꿈을 해준다.
마찬가지로 score_file.close()로 닫아준다.
잘 출력된 것을 확인할 수 있다.
생성된 파일 읽어오기
"w" 는 쓰기
"a" 는 추가하기
"r" 은 읽기이다.
전체 다 읽어오려면
score_file.read()로 불러올 수 있다.
마찬가지로 .close()로 닫아주어야한다.
score.txt 파일을 잘 불러온다.
한 줄 씩 읽기
.readline()
한 줄 씩 읽고 커서를 다음 줄로 넘긴다.
이렇게 줄 바꿈이 저절로 이루어진다.
줄바꿈을 원하지 않는다면 다음과 같이
end = ""를 입력해준다.
본문과 같이 출력된다.
반복문을 통해 파일을 읽기
while True: ... break가 나오기 전까지는 무한루프
line = score_file.readline()
바로 readline()를 실행하는 것이 아니라
변수로 함수를 지정해주고,
if not line:
줄이 없으면 바로 break로 종료
print(line)
줄이 있으면 print()로 출력해준다.
이 때도 .close()로 닫아주어야 한다.
리스트에 값을 넣어서 처리하는 방법
위에서 while 문으로 한 줄씩 읽어왔다면
이번에는 for 문으로 읽어온다.
lines = score_file.readlines()
realine 은 한 줄씩 불러오는 것이라면
readlines는 리스트(list) 형태로 저장한다.
그리고 이 것을 for 문을 통해
하나하나 불러올 수 있다.
for line in lines:
print(line, end="")
for 문 다음에 오는 line은
리스트 안의 각 인자를 line이라는 이름을 붙여준다.
readline과 마찬가지로 줄을 띄어쓰므로
end=""로 바로 다음줄에 출력되게 할 수 있다.
.close()로 닫아주는건 이제 기본!!
pickle
데이터를 파일형태로 저장하는 라이브러리
먼저 profile_file 이라는 변수를 생성,
open("profile.pickle", "wb")
여기서 profile.pickle은 파일명
wb 는 쓰기전용인데 반드시 b를 붙여야한다.
profile = { : , ... } ... 딕셔너리를 생성해준다.
pickle.dump(profile, profile_file) ... profile 변수에서 생성된 dictionary를 오픈된 피클파일에 저장한다.
마찬가지로 .close()로 닫아준다.
pickle에서 데이터 가져오기
"rb" ... r이 아니라 binary라는 의미의 b를 붙여주어야 한다. 피클에서는!
.load(profile_file)
위에서 저장한 딕셔너리를 profile이라는 변수에 새로 불러온다.
with
지금까지는 파일을 열고, 처리를 하고, 닫는 과정이 필요했는데
with를 사용하면 더 빠르게 실행할 수 있다.
close를 해줄 필요도 없고, 간단하다.
퀴즈
1트만에 성공~~
for i in range(1,51):
with open ("{0}주차.txt".format(i),"w", encoding="utf8") as document_file:
document_file.write('''
--- {0}주차 주간보고---
부서 :
이름 :
업무요약 :
'''.format(i))
정답
정답에서는
format(i)가 아니라 str(i)로 바로 넣어줬다.
'나도코딩 파이썬' 카테고리의 다른 글
[나도코딩 파이썬기초(9)] 클래스 퀴즈 (리스트와 반복문을 사용해서 문제풀기) (0) | 2023.02.25 |
---|---|
[나도코딩 파이썬기초(8)] 클래스(init 함수, 멤버변수, 객체, 상속, 메소드, 오버라이딩, pass, super) (0) | 2023.02.25 |
[나도코딩 파이썬기초(6)] 표준 입출력 (줄바꿈, 좌우정렬, 숫자정렬, input, 숫자 3자리마다 콤마표시, 소수점 표시) (0) | 2023.02.25 |
[나도코딩 파이썬기초(5)] 함수, 전달값과 반환값(return), 기본값, 키워드값, 가변인자, 지역변수 전역변수 (0) | 2023.02.25 |
[나도코딩 파이썬기초(4)] if문, for, while 반복문, input함수를 실행시켜 사용자가 직접 입력값을 넣는 방법 (1) | 2023.02.25 |