경기도 인공지능 개발 과정/Python

Python 파일 입출력

agingcurve 2022. 5. 28. 14:53
반응형

 

학습목표

  1. 파일 입출력에 대해 이해한다.
  2. 파일을 읽고 쓸 수 있다.

파일에 문자열 읽기, 쓰기

+ 파일에 문자열 쓰기 
    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.
  • 파일 읽기
    1. 파일에 문자열을 쓸 때는 open 함수를 이용해서 파일객체를 얻어온다.
    2. 얻어온 파일 객체에 read 메소드를 이용해서 문자열을 쓴다.
    3. 모든 일이 끝나면 반드시 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 - 바이너리 모드, 바이트단위 데이터 기록에 사용

연습문제

  1. 단어를 10개 입력받아서 words.txt 파일에 저장하세요.
  2. 위에서 저장한 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