일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 부스트코스
- 인공지능기초다지기
- SQL
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 빅데이터분석기사
- 난생처음 R코딩&데이터 분석 저서
- Oracle
- boostcoures
- Machine Learning
- DB
- boostcourse
- 프로그래머스
- 빅분기
- 코딩테스트
- 기초다지기
- 오라클
- Ai
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- AI 플랫폼을 활용한 데이터 분석
- 네이버부스트캠프
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- PY4E
- 파이썬
- 코딩테스트 python
- 정보처리기사
- 데이터베이스
- 이기적
- python
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- r
- Today
- Total
매일공부
[PY4E] 파이썬 파일; open() read() 본문
1. 파일 열기
- 핸들 = open(파일명, 모드) : 파이썬에게 작업할 파일과 파일로 어떤 작업을 할지 알려줌
fhand = open('mbox.txt', 'r')
- open() : handle 반환
> handle은 파일에 접근하는 창구(파일에 대한 작업 수행)
> 다른 방식으로 저장되어 있는 텍스트를 처리하는 하나의 표준화된 방식
> 많은 양의 문자 파일을 한꺼번에 읽어 발생할 수 있는 성능 문제 방지(점진적 읽기)
- 파일명 : 문자열
- 모드 : 매개변수는 선택사항
> 'r' 파일 읽기
> 'w' 파일 쓰기
- 파일 열기 오류
>>> fh = open('mbox-short.txt', 'r')
>>> print(fh)
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
> 파일 위치의 문제
> 관리자모드가 아니라서 권한이 없어서 그런 것으로 추측됨
> c드라이브 처음이나 d드라이브로 폴더 및 파일 위치를 바꾸면 해결 완료 = cmder 설치랑 같음
2. 개행문자 \n
- 각 줄이 끝났음을 알림 >> 줄 바꿈
- 두 글자가 아닌 한 글자임(빈공간의 일부라고 생각해도 무방)
>>> stuff = 'X\nY'
>>> print(stuff)
X
Y
>>> len(stuff)
3
#X하나 / \n하나 / Y하나
3. 시퀀스로써 파일 핸들
- 읽기용의 파일 핸들 : 파일의 각 줄에 대한 문자열의 시퀀스
- 시퀀스 = 정렬된 집합
- for문을 이용하여 각 줄 읽기
#한줄씩 띄워서 출력
xfile = open('mbox.txt')
for line in xfile:
print(line)
#한 줄씩 파일 줄 세기
fhand = open('mbox.txt')
count = 0
for line in fhand:
count = count + 1
print('Line Count:', count)
$ python open.py
Line Count: 132045
4. 파일 전체 읽기 read()
- 너무 많은 파일을 한번에 읽을 경우 성능 문제 주의
>>> fhand = open('mbox-short.txt')
>>> inp = fhand.read()
>>> print(len(inp))
94626
>>> print(inp[:20])
From stephen.marquar
5. 파일 내용 탐색
- for문에 조건 걸기 > 원하는 줄만 출력
>>> fhand = open('mbox-short.txt')
>>> for line in fhand:
... if line.startswith('From:') :
... print(line)
# From:시작하는 모든 열 출력됨
From: stephen.marquard@uct.ac.za
From: louis@media.berkeley.edu
☞ 기존 파일의 각 줄 끝에는 개행문자 존재 > print 구문이 각 줄에 개행 문가 추가로 더 함
- 공백제거 > rstrip() 사용
>>> fhand = open('mbox-short.txt')
>>> for line in fhand:
... line = line.rstrip() #오른쪽 공백 제거
... if line.startswith('From:') :
... print(line)
From: stephen.marquard@uct.ac.za
From: louis@media.berkeley.edu
#print로 인한 줄바꿈만 존재
- 파일 이름 입력 받기
: 파일 이름 오류 났을 경우를 대비해 try/except 추가
: 한 줄씩 실행하면서 나타냄
>>> fn = input('Enter a file name: ')
>>> try:
... fo = open(fn)
>>> except:
... print('File cannot be opened: ', fn)
... quit()
>>> print(fo)
<_io.TextIOWrapper name='mbox-short.txt' mode='r' encoding='cp949'>
>>> for line in fo:
... sline = line.rstrip()
... print(sline.upper())
FROM STEPHEN.MARQUARD@UCT.AC.ZA SAT JAN 5 09:14:16 2008
RETURN-PATH: <POSTMASTER@COLLAB.SAKAIPROJECT.ORG>
RECEIVED: FROM MURDER (MAIL.UMICH.EDU [141.211.14.90])
BY FRANKENSTEIN.MAIL.UMICH.EDU (CYRUS V2.3.8) WITH LMTPA;
SAT, 05 JAN 2008 09:14:16 -0500
'Programming > Python' 카테고리의 다른 글
[PY4E] 파이썬 딕셔너리; dict() get() items() (0) | 2022.07.12 |
---|---|
[PY4E] 파이썬 리스트; append() sort() split() range() (0) | 2022.07.12 |
[PY4E/AI] 파이썬 문자열; index slicing find startswith endswith upper() lower() capitalize() titile() relpace strip() center (0) | 2022.07.10 |
[PY4E] 파이썬 반복문, 루프; while for break continue Boolean None (0) | 2022.07.07 |
[PY4E] 파이썬 함수; def max min void fruitful (0) | 2022.07.06 |