반응형
학습목표
- 파일 입출력에 대해 이해한다.
- 파일을 읽고 쓸 수 있다.
파일에 문자열 읽기, 쓰기
+ 파일에 문자열 쓰기
1. 파일에 문자열을 쓸 때는 open 함수를 이용해서 파일객체를 얻어온다.
2. 얻어온 파일 객체에 wirte 메소드를 이용해서 문자열을 쓴다.
3. 모든 일이 끝나면 반드시 close 메소드를 이용해서 파일객체를 닫는다.
In [34]:
import os
print(os.getcwd())
c:\Temp
In [7]:
#경로이동 가능
cd c:\temp
Input In [7]
cd c:\temp
^
SyntaxError: invalid syntax
In [41]:
os.chdir('c:\\Temp')
In [44]:
os.chdir('C:\\ai\\ai_2205')
In [45]:
os.chdir('C:/ai/ai_2205')
In [16]:
f = open('myFile.txt', 'w') # (1)'myFile.txt' 파일 쓰기 모드로 열기
f.write('This is my first file.') # (2) 연 파일에 문자열 쓰기
f.close() # (3) 파일 닫기
In [17]:
#주피터노트북에서 !명령어 로 운영체제 명령어 수행가능!!
#!type 파일명 텍스트파일내용 출력.. 맥은 !cat 파일명 으로 가능
!type myFile.txt
This is my first file.
- 파일 읽기
- 파일에 문자열을 쓸 때는 open 함수를 이용해서 파일객체를 얻어온다.
- 얻어온 파일 객체에 read 메소드를 이용해서 문자열을 쓴다.
- 모든 일이 끝나면 반드시 close 메소드를 이용해서 파일객체를 닫는다.
In [18]:
f = open('myFile.txt','r')
text = f.read()
f.close()
print(text)
This is my first file.
반복문을 이용해 파일 읽고 쓰기
- 파일에 문자열 한 줄씩 쓰기
In [21]:
f = open('gugudan_2.txt','w')
for num in range(1,10):
f.write(f'2 X {num}={2*num}\n')
f.close()
In [22]:
!type gugudan_2.txt
2 X 1=2
2 X 2=4
2 X 3=6
2 X 4=8
2 X 5=10
2 X 6=12
2 X 7=14
2 X 8=16
2 X 9=18
- 리스트에 들어있는 문자열 파일에 쓰기
- 파일객체.writelines(문자열리스트)
In [24]:
lines = ['hi!!!!','pythone!!!!','Django','Html','CSS']
f = open('lineTest.txt','w')
f.writelines(lines)
f.close()
- 파일에서 문자열 한 줄씩 읽기
- readline()
In [23]:
f = open('gugudan_2.txt','r')
print(f.read())
f.close()
2 X 1=2
2 X 2=4
2 X 3=6
2 X 4=8
2 X 5=10
2 X 6=12
2 X 7=14
2 X 8=16
2 X 9=18
In [26]:
f = open('gugudan_2.txt','r')
gg_list = f.readlines()
f.close()
gg_list
Out[26]:
['2 X 1=2\n',
'2 X 2=4\n',
'2 X 3=6\n',
'2 X 4=8\n',
'2 X 5=10\n',
'2 X 6=12\n',
'2 X 7=14\n',
'2 X 8=16\n',
'2 X 9=18\n']
- 파일의 내용을 한 줄씩 리스트로 가져오기.
- readlines()
In [27]:
f = open('gugudan_2.txt','r')
gg = f.readline()
f.close()
gg
Out[27]:
'2 X 1=2\n'
In [28]:
f = open('gugudan_2.txt','r')
for txt in f:
print(txt)
f.close()
2 X 1=2
2 X 2=4
2 X 3=6
2 X 4=8
2 X 5=10
2 X 6=12
2 X 7=14
2 X 8=16
2 X 9=18
In [29]:
##참고
#파일 객체는 이터레이터입니다. 따라서 변수 여러 개에 저장하는 언패킹(unpacking)도 가능합니다
file = open('gugudan_2.txt','r')
a,b,c,d,e,f,g,h,i = file
file.close()
print(a,b,c,d,e,f,g,h,i)
2 X 1=2
2 X 2=4
2 X 3=6
2 X 4=8
2 X 5=10
2 X 6=12
2 X 7=14
2 X 8=16
2 X 9=18
In [ ]:
In [1]:
자동으로 file 객체를 닫아주는 with
- with 문의 구조
```
with open(파일이름, 파일모드) as 파일객체:
코드
```
In [30]:
with open('hi.txt', 'w') as f:
f.write('hi!!! 1')
f.write('hi!!! 2')
f.write('hi!!! 3')
f.write('hi!!! 4')
객체를 파일에 저장하는 pickle 모듈
- 파이썬 객체를 파일에 저장하는 과정을 피클링(pickling)이라고 한다.
- 파일에서 객체를 읽어오는 과정을 언피클링(unpickling)이라고 한다.
- 파이썬 객체를 파일에 저장하기
- pickle 모듈의 dump 메서드를 사용한다
In [31]:
import pickle
name = 'kang'
phone = '010-111-2222'
address = '경기도 고양시'
with open('kang.txt','wb') as f:
pickle.dump(name,f)
pickle.dump(phone,f)
pickle.dump(address,f)
In [32]:
!type kang.txt
��kang�.���010-111-2222�.���寃쎄린�룄 怨좎뼇�떆�.
- 파일에서 파이썬객체 읽기
- pickle 모듈의 load를 사용한다.
In [33]:
with open('kang.txt','rb') as f:
name = pickle.load(f)
phone = pickle.load(f)
print(name,phone)
kang 010-111-2222
파일 모드 종류
r - 읽기모드 (디폴트)
w - 쓰기모드, 파일이 있으면 모든 내용을 삭제
x - 쓰기모드, 파일이 있으면 오류 발생
a - 쓰기모드, 파일이 있으면 뒤에 내용을 추가
-
- 읽기쓰기모드
t - 텍스트 모드, 텍스트 문자 기록에 사용 (디폴트)
b - 바이너리 모드, 바이트단위 데이터 기록에 사용
연습문제
- 단어를 10개 입력받아서 words.txt 파일에 저장하세요.
- 위에서 저장한 words.txt 파일에서 단어가 5자 이하인 단어의 개수를 출력하는 코드를 만들어 보세요.
가능하다면, 두 문제 모두 함수로 정의해 주세요
'경기도 인공지능 개발 과정 > Python' 카테고리의 다른 글
Python 예외처리 (0) | 2022.05.28 |
---|---|
Python 클래스와 객체 (0) | 2022.05.28 |
Python 함수, lambda 함수 (0) | 2022.05.28 |
Python 조건문과 반복문(While, For) (0) | 2022.05.28 |
Python 컬렉션 타입 (0) | 2022.05.28 |