250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- __sub__
- fnmatch
- JS
- __getitem__
- __len__
- node.js
- View
- Database
- __annotations__
- mro()
- CSS
- discard()
- fileinput
- MySQL
- randrange()
- shuffle()
- remove()
- MySqlDB
- inplace()
- decode()
- glob
- items()
- zipfile
- HTML
- 오버라이딩
- 파이썬
- shutil
- choice()
- locals()
- count()
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(파이썬) 파일 입출력 본문
728x90
반응형
1. 파일 열기
파일변수 = open('파일이름', '파일 열기 모드')
- 파일 열기 모드: w(출력), r(입력), a(추가출력)
- w는 지정된 경로에 파일이 없으면 파일을 만든 후 저장하고, 파일이 있으면 기존의 모든 데이터를 지우고 다시 저장
- r은 지정된 경로에 파일이 없으면 에러, 있으면 해당 파일의 데이터를 읽어옴
- a는 지정된 경로에 파일이 없으면 파일을 만든 후 저장하고, 파일이 있으면 기존의 데이터 뒤에 이어서 저장
- 파일 종류 모드: t(텍스트 파일, 생략가능), b(바이너리 파일)
input = open('text.txt', 'r') # 텍스트 파일 열기 모드
input = open('text.txt', 'rt') # 텍스트 파일 열기 모드
input = open('text.txt', 'rb') # 바이너리 파일 열기 모드
✅ 파일을 출력할 때 작업이 모두 완료되면 반드시 close() 메소드를 사용해서 파일을 닫아야 정상적으로 데이터가 저장됨
1-1. 파일 저장하기
In [2]:
file = open('data.txt', 'wt')
for i in range(10):
file.write('파일 열기 테스트: ' + str(i) + '\n') # \n: 파일 내에서 개행
file.close()
print('data.txt 파일에 쓰기 완료!')
data.txt 파일에 쓰기 완료!
1-2. 파일 경로
- 절대 경로: 디스크 드라이브의 최상위(root) 디렉토리부터 파일이 저장 또는 읽어올 디렉토리까지의 경로 예) C:/LeeCoding/Python/Day2/data.txt
- 상대 경로: 현재 화면에 표시되는 소스파일이 위치한 디렉토리부터 파일이 저장 또는 읽어올 디렉토리까지의 경로
- 같은 디렉토리: 파일명 또는 ./파일명
- 상위 디렉토리: ../파일명 또는 ./../파일명
- 하위 디렉토리: 디렉토리명/파일명 또는 ./디렉토리명/파일명
In [5]:
file = open('./data/data.txt', 'wt')
for i in range(10):
file.write('파일 열기 테스트: ' + str(i) + '\n') # \n: 파일 내에서 개행
file.close()
print('data.txt 파일에 쓰기 완료!')
data.txt 파일에 쓰기 완료!
1-3. 파일 읽어오기
- read(): 파일로부터 전체 데이터를 읽어옴
- read(size): 파일로부터 사이즈 만큼 데이터를 읽어옴
In [8]:
file = open('./data/data.txt', 'rt')
data = file.read()
print('data.txt 파일 전체 데이터 읽기 완료')
print(data)
file.close()
data.txt 파일 전체 데이터 읽기 완료
파일 열기 테스트: 0
파일 열기 테스트: 1
파일 열기 테스트: 2
파일 열기 테스트: 3
파일 열기 테스트: 4
파일 열기 테스트: 5
파일 열기 테스트: 6
파일 열기 테스트: 7
파일 열기 테스트: 8
파일 열기 테스트: 9
In [9]:
file = open('./data/data.txt', 'rt')
data = file.read(10)
print('data.txt 파일 일부 데이터 읽기 완료')
print(data)
file.close()
data.txt 파일 일부 데이터 읽기 완료
파일 열기 테스트:
In [10]:
# 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 [12]:
file = open('./data/test.txt', 'wt')
while True:
data = input('단어를 입력하세요: ')
if data == 'quit':
break
file.write('입력한 단어: ' + data + '\n')
file.close()
print('저장되었습니다.')
단어를 입력하세요: apple
단어를 입력하세요: banana
단어를 입력하세요: orange
단어를 입력하세요: quit
저장되었습니다.
- 강사님 풀이
In [13]:
file = open('./data/word.txt', 'w')
while True:
data = input('단어를 입력하세요: ')
if data.lower() == 'quit':
break
file.write(data + '\n')
file.close()
단어를 입력하세요: apple
단어를 입력하세요: banana
단어를 입력하세요: orange
단어를 입력하세요: melon
단어를 입력하세요: quit
1-4. with 문
- 자원을 획득하고 사용 후 반납해야 하는 경우 블록으로 사용하는 문장
In [14]:
with open('./data/word.txt', 'w') as f:
while True:
data = input('단어를 입력하세요: ')
if data.lower() == 'quit':
break
f.write(data + '\n')
단어를 입력하세요: apple
단어를 입력하세요: banana
단어를 입력하세요: orange
단어를 입력하세요: avocado
단어를 입력하세요: quit
1-5. readline()
- 텍스트 파일을 한 줄씩 읽어서 퍼리
- 파일이 종료되어 더이상 읽을 수 없으면 빈 문자열 ''을 읽어옴
In [15]:
with open('./data/word.txt', 'r') as f:
lines = []
while True:
line = f.readline()
if not line:
break
if len(line.strip()) != 0:
print(line, end='')
lines.append(line.strip())
print(lines)
apple
banana
orange
avocado
['apple', 'banana', 'orange', 'avocado']
1-6. readlines()
- 전체라인을 모두 읽어서 각 라인단위로 리스트에 raw string으로 저장
In [16]:
with open('./data/word.txt', 'r') as f:
lines = f.readlines()
print(lines)
['apple\n', 'banana\n', 'orange\n', 'avocado\n']
In [17]:
for i in lines:
print(i, end='')
apple
banana
orange
avocado
2. 인코딩과 디코딩
In [18]:
txt1 = 'Hello Python'
type(txt1)
Out[18]:
str
In [19]:
txt2 = txt1.encode('utf-8')
type(txt2)
Out[19]:
bytes
In [20]:
print(txt2)
b'Hello Python'
In [21]:
txt3 = '안녕하세요 파이썬'
print(txt3.encode('utf-8'))
b'\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94 \xed\x8c\x8c\xec\x9d\xb4\xec\x8d\xac'
2-2. 디코딩(Decoding)
- 사람이 이해할 수 있는 언어로 되돌리는 것
- 디코딩 = 역코드화 = 복호화
- 유니코드 변환 사이트
In [22]:
txt3 = '안녕하세요 파이썬'
txt4 = txt3.encode('utf-8')
print(txt4)
b'\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94 \xed\x8c\x8c\xec\x9d\xb4\xec\x8d\xac'
In [23]:
print(txt4.decode('utf-8'))
안녕하세요 파이썬
In [25]:
print(txt4.decode('ascii'))
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-25-cb2758a9e6d4> in <module>
----> 1 print(txt4.decode('ascii'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xec in position 0: ordinal not in range(128)
728x90
반응형
'파이썬 기초' 카테고리의 다른 글
(파이썬) 변수 타입 어노테이션 (0) | 2023.03.13 |
---|---|
(파이썬) 클로저와 데코레이터 (0) | 2023.03.13 |
(파이썬) 예외 처리 (1) | 2023.03.13 |
(파이썬) 모듈 (0) | 2023.03.10 |
(파이썬) 스페셜 메소드 (0) | 2023.03.10 |
Comments