Post List

2015년 7월 27일 월요일

Python 기초 #06 File

1. File 열기

>>> FH = open('mbox.txt')
>>> print FH
 <open file 'mbox.txt', mode 'r' at 0x00000000024DFDB0>

fileHandle = open(파일명)

을 하면 파일 핸들러(file handler)를 얻을 수 있습니다. 파일 핸들러는 파일에 들어있는 실제 데이터가 아니고, 데이터를 읽을 수 있는 도구 입니다.
만약 존재하지 않는 파일명을 넣는다면 traceback 오류가 발생하므로 try... except를 이용하는 것이 좋습니다.

2. File 내용 읽기

File의 내용은 많이 클 수도 있습니다.
그러므로 그것을 한 번에 다 읽는 다는 것은 메모리 부족으로 불가능 할 경우도 있습니다.
File의 크기가 어느 정도 작아서 메모리에 한번에 다 읽는게 가능한 경우는
FileHandle에 .read() 라는 메쏘드를 이용하여 읽을 수도 있지만,
큰 파일인 경우는 구분하여 읽는게 좋습니다.

>>> FullText = FH.read()
>>> print len(FullText)
6687002
>>> print FullText[:80]
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
Return-Path: <postmaste

file 내의 내용을 for in 을 이용해서 각 문자열 단위로 읽을 수 있습니다.
문자열을 끊는 기준은 줄바꿈 기호 (\r, \n)로 구분합니다.

count = 0
FH = open('mbox.txt')
for line in FH:
    count += 1
print('Line Count:', count)

3. File에 쓰기

File에 쓰기 위해서는 open 의 2번째 인자로 'w' 를 주면 됩니다.
이미 존재하는 File을 쓰기 모드로 읽으면 과거 데이터가 모두 지워지기 때문에 주의해야 합니다.
'a' 모드로 open을 하면 이미 존재 하는 데이터를 지우지 않고 뒤에 추가가 가능합니다.
존재 하지 않는 File명으로 하면 새로운 File을 생성해 냅니다.
.write(문자열) 메쏘드를 이용하여 내용을 저장하면 됩니다.
새줄(newline)은 자동으로 추가해 주지 않으므로, 필요할 때 사용자가 직접 문자열에 추가해 주셔야 합니다.
File에 내용을 다 쓴 뒤에는 .close() 메쏘드를 이용하여 닫아주면 저장이 됩니다.

>>> FO = open('out.txt', 'w')
>>> print(FO)
<_io.TextIOWrapper name='out.txt' mode='w' encoding='cp949'>
>>> line1 = 'This is DevLuna Page.\n'
>>> line2 = 'Welcome Python World !\n'
>>> FO.write(line1)
22
>>> FO.write(line2)
23
>>> FO.close()
>>> print(open('out.txt', 'r').read())
This is DevLuna Page.
Welcome Python World !

>>> F = open('out.txt', 'a')
>>> line3 = 'Hello Python'
>>> F.write(line3)
12
>>> F.close()
>>> print(open('out.txt', 'r').read())
This is DevLuna Page.
Welcome Python World !
Hello Python

4. File 내용에 검색에 필요한 string method 몇가지 소개

.startswith(문자열) : 해당 문자열로 시작하는지 체크 (True , False 값을 return)
.rstrip( ) : 문자열의 오른쪽부터 빈 공백을 제거한 string을 생성하여 return 합니다.
.upper( ) : 문자열을 모두 대문자로하여 생성한 string을 return 합니다.

이 정도의 기초를 가지고 나머지는 Visual Studio의 Intellisence 기능을 활용하셔도 되구요.
아니면 string 편에서 다룬 dir 과 help를 이용하셔도 됩니다.

string method에서 주의할 점은 해당 method의 결과를 다른 string으로 생성하여 return 하는지,
아니면 해당 string 자체를 바꿔주는지를 잘 확인을 해야 합니다.
그렇지 않을 경우 논리적으로는 문제가 없어보이지만, 제대로 동작하지 않는 Code가 되어서
그 원인을 찾아내기 힘들 수도 있기때문에 이점 유의해아합니다.

연습문제 06
'mbox.txt' 파일을 읽고 'From:'으로 시작하는 문장을 대문자로 바꿔서 출력하세요.
마지막에 출력한 문장이 총 몇개였는지 Count를 출력하세요.
'mbox.txt'파일은 http://www.py4inf.com/code/mbox.txt 에서 다운로드가 가능합니다.

댓글 없음:

댓글 쓰기