1. 파일 열기
파일변수 = open('파일이름', '파일 열기 모드 및 종류')
- 파일 열기 모드 : w (출력), r (입력), a(추가 출력) (우리 입장 말고 컴퓨터 입장에서)
- w는 지정된 경로에 파일이 없으면 파일을 만든 후 저장하고, 파일이 있으면 기존의 모든 데이터를 지우고 다시 저장
- r은 지정된 경로에 파일이 없으면 에러, 있으면 해당 파일의 데이터를 읽어옴
- a는 지정된 경로에 파일이 없으면 파일을 만든 후 저장하고, 파일이 있으면 기존의 데이터 뒤에 이어서 저장
- 파일 종류 모드: t (텍스트 파일, 생략 가능), b (바이너리 파일)
input = open('text.txt', 'r') # 텍스트파일 열기모드
input = open('text.txt', 'rt') # 텍스트파일 열기모드
input = open('apple.jpg', 'rb') # 바이너리파일 열기모드
파일을 출력할 때 작업이 모두 완료되면 반드시 close()메소드를 사용해서 파일을 닫아야 정상적으로 데이터가 저장됨
1-1. 파일 저장하기
In [ ]:
file = open('data.txt', 'wt')
for i in range(10):
file.write('파일 열기 테스트: ' + str(i) + '\n') # \n: 파일 내에서 개행을 해주는 특수문자(Enter역할)
file.close()
print('data.txt 파일에 쓰기 완료!')
data.txt 파일에 쓰기 완료!
1-2. 파일 경로
- 절대 경로: 디스크 드라이브의 최 상위(root) 디렉토리부터 파일이 저장 또는 읽어올 디렉토리까지의 경로
예) C:\SennysPython\Python\Day1\day1.txt
- 상대 경로: 현재 화면에 표시되는 소스파일이 위치한 디렉토리부터 파일이 저장 또는 읽어올 디렉토리까지의 경로
- 같은 디렉토리: 파일명
- 상위 디렉토리: ./파일명
- 하위 디렉토리: 디렉토리명/파일명
In [ ]:
file = open('./data/data.txt', 'wt')
for i in range(10):
file.write('파일 열기 테스트: ' + str(i) + '\n')
file.close()
print('data.txt 파일에 쓰기 완료!')
data.txt 파일에 쓰기 완료!
1-3. 파일 읽어오기
- read(): 파일로부터 전체 데이터를 읽어옴
- read(size): 파일로부터 사이즈만큼 데이터를 읽어옴
In [ ]:
file = open('./data/data.txt', 'rt')
data = file.read()
print('data.txt 파일 전체 데이터 읽기 완료')
print(data)
data.txt 파일 전체 데이터 읽기 완료
파일 열기 테스트: 0
파일 열기 테스트: 1
파일 열기 테스트: 2
파일 열기 테스트: 3
파일 열기 테스트: 4
파일 열기 테스트: 5
파일 열기 테스트: 6
파일 열기 테스트: 7
파일 열기 테스트: 8
파일 열기 테스트: 9
In [ ]:
file = open('./data/data.txt', 'rt')
data = file.read(10) #유니코드 10글자 읽어오기
print('data.txt 파일 일부 데이터 읽기 완료')
print(data)
file.close()
data.txt 파일 일부 데이터 읽기 완료
파일 열기 테스트:
In [ ]:
# read(10)을 이용하여 data.txt에 있는 모든 데이터를 출력하기
file = open('./data/data.txt', 'rt')
while True:
data = file.read(10)
if not data:
break
print(data, end='')
파일 열기 테스트: 0
파일 열기 테스트: 1
파일 열기 테스트: 2
파일 열기 테스트: 3
파일 열기 테스트: 4
파일 열기 테스트: 5
파일 열기 테스트: 6
파일 열기 테스트: 7
파일 열기 테스트: 8
파일 열기 테스트: 9
문제
키보드로 데이터를 입력하고 텍스트 파일에 저장하는 프로그램을 작성해보자.(단, 'quit'가 입력되면 저장을 끝내고 프로그램을 종료)
- 단어를 입력하세요: apple
- 단어를 입력하세요: banana
- 단어를 입력하세요: orange ...
- 단어를 입력하세요: quit 저장되었습니다.
In [ ]:
# 문풀
file = open('./data/fruit.txt', 'wt')
while True:
fr = input('단어를 입력하세요: ')
if fr == 'quit':
break
file.write('단어를 입력하세요: ' + fr + '\n')
file.close()
단어를 입력하세요: apple
단어를 입력하세요: banana
단어를 입력하세요: quit
In [ ]:
# 선생님 풀이
file = open('./data/world.txt', 'w')
while True:
data = input('단어를 입력하세요: ')
if data.lower()== 'quit':
break
file.write(data + '\n')
file.close()
단어를 입력하세요: apple
단어를 입력하세요: banana
단어를 입력하세요: quit
1-4. with 문
- 자원을 획득하고 사용 후 반납해야 하는 경우 블록으로 사용하는 문장
In [ ]:
with open('./data/world.txt', 'w') as f: # 이 경우 file.close() 안해줘도 됨
while True:
data = input('단어를 입력하세요: ')
if data.lower()== 'quit':
break
f.write(data + '\n')
1-5. readline()
- 텍스트 파일을 한 줄씩 읽어서 처리
- 파일이 종료되어 더이상 읽을 수 없으면 빈 문자열''을 읽어옴
In [ ]:
with open('./data/world.txt', 'r') as f:
lines = []
while True:
line = f.readline() #한줄씩 읽어오는 메소드
if not line: #빈문자가 날아오면 break!
break
if len(line.strip()) != 0:
print(line, end = '')
lines.append(line.strip())
print(lines)
1-6. readlines()
- 전체 라인을 모두 읽어서 각 라인 단위로 리스트에 raw string으로 저장
In [ ]:
with open('./data/world.txt', 'r') as f:
lines = f.readlines()
print(lines)
In [ ]:
for i in lines:
print(i, end = '')
2. 인코딩과 디코딩
2-1. 인코딩(Encoding)
- 컴퓨터에서 사람이 인지할 수 있는 형태의 데이터를 약속된 규칙에 의해 컴퓨터가 사용하는 0과 1로 변환하는 과정
- 인코딩 = 코드화 = 암호화 = 부호화
- 예) 아스키코드 인코딩, URL 인코딩, Base64 인코딩, 유니코드 인코딩...
- https://home.unicode.org/
In [ ]:
txt1 = 'Hello Python'
type(txt1)
In [ ]:
txt2 = txt1.encode('utf-8')
type(txt2)
In [ ]:
print(txt2)
In [ ]:
txt3 = '안녕 파이썬'
print(txt3.encode('utf-8'))
2-2. 디코딩(Decoding)
- 사람이 이해할 수 있는 언어로 되돌리는 것
- 디코딩 = 역코드화 = 복호화
- 유니코드 변환 사이트(https://home.unicode.org/)
In [ ]:
txt3 = '안녕하세요 파이썬'
txt4 = txt3.encode('utf-8')
print(txt4)
In [ ]:
print(txt4.decode('utf-8'))
In [ ]:
print(txt4.decode('ascii'))
과제
- 영어 단어장 프로그램을 만들어보자
- 아래 번호를 선택하세요
-
- 단어 입력(단어, 뜻, 레벨)
-
- 단어 출력
-
- 단어 저장(word.txt에 저장)
-
- 프로그램 종료
- 아래 번호를 선택하세요 : 1
- 단어를 입력하세요: apple, 사과, 1
- 입력되었습니다
- 아래 번호를 선택하세요: 1
- 단어를 입력하세요: banana, 바나나, 1
- 입력되었습니다
- 아래 번호를 선택하세요: 2 apple( 사과, level 1) banana( 바나나, level 1)
- 아래 번호를 선택하세요: 3
- 저장되었습니다
- 아래 번호를 선택하세요: 4
- 프로그램을 종료합니다
단, 저장된 파일이 있는 경우 프로그램 재실행시 데이터를 읽어서 메모리에 저장
In [ ]:
# 문제풀이
file = open('./data/dictionary.txt','wt')
while True:
print('아래 번호를 선택하세요\n 1. 단어입력(단어, 뜻, 레벨)\n 2. 단어출력\n 3. 단어 저장(word.txt에 저장)\n 4. 프로그램 종료')
num = int(input())
if num == 1:
eng, kor, lev = input('단어를 입력하세요: ').split(' ')
di = eng + ',' + kor + ', level' + lev
elif num == 2:
print(di)
elif num == 3:
print('저장되었습니다')
file.write(di)
else:
print('프로그램을 종료합니다')
file.close()
break
'KDT 수업 > Python' 카테고리의 다른 글
[파이썬] 23.변수의 타입 (0) | 2023.03.14 |
---|---|
[파이썬] 22. 클로저와 데코레이터 (0) | 2023.03.14 |
[파이썬] 24. 파일 입출력 라이브러리 (0) | 2023.03.14 |
[파이썬] 주피터 노트북 설치하기 (1) | 2023.03.14 |
[파이썬] 25.폴더 관리 프로그램 실습 (0) | 2023.03.14 |