반응형
파일 읽기, 쓰기
▶ 기본 문법
객체 = open(파일명, 모드, encoding="utf8")
객체.close()
▶ 파일 생성
file = open("smple.txt", "w")
file.close()
▶ 경로 설정
- ./ + tab : 하위 경로
- ../ + tab : 상위 경로
▶ 모드
파일 열기 모드 | 설명 |
"r" | 읽기 모드. Default |
"w" | 쓰기 모드. 기존 내용 삭제 |
"a" | 쓰기 모드. 기존 내용 보존 |
"b" | 이진 모드 |
"t" | 텍스트 모드. Default |
파일에 써보기
import os
print(os.getcwd()) # 현재의 작업 폴더를 확인한다.
f.write(문자열) # 데이터를 입력한다.
import os
print(os.getcwd())
# /Users/werther
f = open("sample2.txt", "w")
for i in range(1, 10) :
data = "%d 번째 줄입니다. \n" % i
f.write(data)
f.close()
# 1 번째 줄입니다.
# 2 번째 줄입니다.
# 3 번째 줄입니다.
# 4 번째 줄입니다.
# 5 번째 줄입니다.
# 6 번째 줄입니다.
# 7 번째 줄입니다.
# 8 번째 줄입니다.
# 9 번째 줄입니다.
import os
print(os.getcwd())
# /Users/werther
f = open("sample2.txt", "w")
f.write("-" * 10 + "\n")
for i in range(1, 4) :
data = "%d 번째 항목 \n" % i
f.write(data)
f.write("-" * 10)
f.close()
# ----------
# 1 번째 항목
# 2 번째 항목
# 3 번째 항목
# ----------
scores = ['김소영 82 80 93 97 93 88',
'정예린 86 100 93 86 90 77',
'이세영 91 88 99 79 92 68',
'정수정 86 100 93 89 92 93',
'박지수 80 100 95 89 90 84']
for i in scores :
print(f"{i} \n")
f = open("scores.txt", "w")
for i in scores :
data = f"{i} \n"
f.write(data)
f.close()
파일 읽기
▶ readline()
한줄을 읽어서 반환한다.
f = open("scores.txt", "r")
while True :
line = f.readline()
if not line :
break
print(line)
f.close()
# 김소영 82 80 93 97 93 88
# 정예린 86 100 93 86 90 77
# 이세영 91 88 99 79 92 68
# 정수정 86 100 93 89 92 93
# 박지수 80 100 95 89 90 84
▷ 구구단 입력받아 출력하기
with open("GUGU_3Dan.txt", 'w') as f :
num = int(input("1~9의 수를 입력하세요 : "))
f.write(f"\n{num}단 시작\n")
for i in range(1, 10) :
result = num * i
data = f"{num} * {i} = {result}\n"
f.write(data)
f.write(f"{num}단 종료")
with open("GUGU_3Dan.txt", "r") as f :
while True :
line = f.readline()
if not line :
break
print(line, end="")
# 1~9의 수를 입력하세요 : 3
# 3단 시작
# 3 * 1 = 3
# 3 * 2 = 6
# 3 * 3 = 9
# 3 * 4 = 12
# 3 * 5 = 15
# 3 * 6 = 18
# 3 * 7 = 21
# 3 * 8 = 24
# 3 * 9 = 27
# 3단 종료
▶ readlines()
모든 라인을 읽고 각 줄을 요소로 갖는 리스트 반환한다.
f = open("scores.txt", "r")
lines = f.readlines()
print(lines)
f.close()
# ['김소영 82 80 93 97 93 88 \n', '정예린 86 100 93 86 90 77 \n', '이세영 91 88 99 79 92 68 \n', '정수정 86 100 93 89 92 93 \n', '박지수 80 100 95 89 90 84 \n']
※ for문과 strip()을 사용하면 간단하게 한 줄 씩 출력이 가능하다.
f = open("scores.txt", "r")
lines = f.readlines()
for i in lines :
print(i.strip())
f.close()
# 김소영 82 80 93 97 93 88
# 정예린 86 100 93 86 90 77
# 이세영 91 88 99 79 92 68
# 정수정 86 100 93 89 92 93
# 박지수 80 100 95 89 90 84
▶ read()
파일 내용 전체를 문자열로 반환한다.
f = open("scores.txt", "r")
lines = f.read()
print(lines)
f.close()
# 김소영 82 80 93 97 93 88
# 정예린 86 100 93 86 90 77
# 이세영 91 88 99 79 92 68
# 정수정 86 100 93 89 92 93
# 박지수 80 100 95 89 90 84
▷ 점수 정보를 가져와서 총점과 평균 구하기
f = open("scores.txt", "r")
print("-"*30)
lines = f.readlines()
for i in lines :
student = i.split(" ")
score = li[1:7]
total = 0
for i in score :
total += int(i)
avg = round(total / len(score), 2)
print(f"{student[0]} \n합계:{total}, 평균:{avg}")
print("-"*30)
f.close()
# ------------------------------
# 김소영
# 합계:533, 평균:88.83
# ------------------------------
# 정예린
# 합계:532, 평균:88.67
# ------------------------------
# 이세영
# 합계:517, 평균:86.17
# ------------------------------
# 정수정
# 합계:553, 평균:92.17
# ------------------------------
# 박지수
# 합계:538, 평균:89.67
# ------------------------------
파일에 새로운 내용 추가하기
쓰기 모드("w")로 파일을 열게되면 전의 내용이 모두 사라지게된다.
이럴 때 추가 모드("a")로 열면 새로운 값만 추가 할 수 있다.
f = open("sample3.txt", "w")
f.write("처음으로 작성한 내용입니다.")
f.close()
f = open("sample3.txt", "a")
f.write("\n추가 작업한 내용입니다.")
f.close()
# 처음으로 작성한 내용입니다.
# 추가 작업한 내용입니다.
with문
with문은 파일을 open()하고 close()하는 것을 자동으로 처리해준다.
▶ with의 블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close 된다.
with open("sample3.txt", 'a') as f :
f.write("\nwtih문을 사용하여 문자를 추가하였다.")
# 처음으로 작성한 내용입니다.
# 추가 작업한 내용입니다.
# wtih문을 사용하여 문자를 추가하였다.
파일 이름 바꾸기
os.rename() 함수를 사용하여 이름을 바꿀 수 있다.
주의 할 점은 반드시 파일의 경로와 파일의 확장자까지 포함해야 한다.
import os
# 경로안의 목록을 확인한다.
f = os.listdir("../werther/")
# 첫 번째 인자의 해당 경로안의 파일명과 확장자를 입력하고 두번째 인자값에 변경할 이름을 입력한다.
os.renames("../werther/GUGU_3Dan.txt", "../werther/GUGUDan.txt")
반응형
'Python' 카테고리의 다른 글
[python] Class (0) | 2022.09.03 |
---|---|
[python] CSV FILE (0) | 2022.09.01 |
[python] for, if문 축약 (0) | 2022.08.31 |
[python] function (0) | 2022.08.30 |
[Python] 예제 : 요일 확인 프로그램 (0) | 2022.08.30 |