1. 파일 열기 open()
파일을 읽는 경우 파일에 영향을 끼치지 않는다.
쓰기 모드가 경우 내용을 없애고 새로 쓸 수 있다.
fhand = open('filename', 'mode') # mode에는 읽기(r), 쓰기(w) 등이 들어간다. 비워두면 읽기모드로 열린다.
print(fhand) # 파일 내용이 아닌 파일명, 모드, 인코딩과 같은 정보를 출력해준다.
2. 개행 문자 (The newline Character)
문자열에서 줄 바꿈을 표시해주는 문자이다. \n으로 표기하며, 하나의 문자로 취급한다.
# 개행문자 \n
print('Hello\nworld!')
# Hello
# world!
3. 파일을 읽는 과정 (File Processing)
파일을 일련의 줄로 생각할 수 있으며 일반적으로 그 줄을 한 번에 한 줄씩 읽게 된다.
파일을 읽을 때 가장 일반적으로 쓰이는 방법은 파일을 여러 줄의 문장으로 보고 for문을 이용하여 파일을 읽는 것이다.
open() 함수로 파일을 연 뒤, 그것을 변수에 저장한다. 그리고 for문의 반복 변수를 통해 각 줄을 차례로 받는다.
xfile = open('mbox.txt') # open() 함수로 파일을 연 뒤, xfile 변수에 저장한다.
for cheese in xfile: # for문을 통해 한 줄 한 줄 읽어들인다.
print(cheese) # for 루프가 반복됨에 따라 파일의 내용이 순차적으로 출력된다.
4. 활용
# 파일이 몇 줄인지 세기
fhand = open('mbox-txt')
count = 0
for line in fhand:
count = count + 1
print('Line Count: ', count)
# 파일 내의 전체 글자수 세기
fhand = open('mbox-short.txt')
inp = fhand.read()
print(len(inp))
# 특정 문자열로 시작하는 줄 찾아 출력하기
fhand = open('mbox.txt')
for line in fhand:
if line.startswith('From:'): # From:으로 시작하는 줄 찾기
print(line)
# 출력 시 빈 줄이 있는 경우
fhand = open('mbox.txt')
for line in fhand:
line = line.rstrip()
if line.startswith('From:'): # From:으로 시작하는 줄 찾기
print(line)
# 출력 대신 반환하기
fhand = open('mbox.txt')
for line in fhand:
if not line.startswith('From:'): # From:으로 시작하는 줄이 아니면
continue # 스킵
print(line) # 반환받은 값을 출력
# 사용자에게 파일을 입력값으로 받아내기
fname = input('Enter the file name: ')
fhand = open(fname)
# 파일명 디버깅
fname = input('Enter the file name: ')
try:
fhand = open(fname)
except:
print('File cannot be opened:', fname)
quit()
Assignment
File 챕터의 assignment는 총 두 개가 있었다.
Assignment 7.1은 파일 이름을 묻는 메시지를 표시한 다음 파일명 word.txt 파일을 열고 파일을 읽고 파일 내용을 대문자로 인쇄하는 프로그램을 작성하는 것이었다.
나의 풀이는 아래와 같다.
# ex_7_1
# Use words.txt as the file name
fname = input("Enter file name: ")
fh = open(fname)
fh = fh.read()
for line in fh:
fh = fh.rstrip()
print(fh.upper())
Assignment 7.2는 input() 함수로 사용자에게 'mbox-short.txt' 파일을 받아 와서 해당 파일을 열고 읽으면서 해당 양식의 행을 찾는 프로그램을 작성한 뒤, 각 행에서 float 값을 추출한 후 그 값의 평균을 계산하여 아래와 같이 출력한다. 단, sum() 함수나 sum이라는 변수를 사용하면 안 됐다.
나의 풀이는 아래와 같다.
# ex_7_2
# Use the file name mbox-short.txt as the file name
fname = input("Enter file name: ")
fh = open(fname)
total = 0
count = 0
for line in fh:
if not line.startswith("X-DSPAM-Confidence:"):
continue
line = line[20:]
total = total + float(line)
count = count + 1
print('Average spam confidence:',total/count)
'Python > PY4E' 카테고리의 다른 글
PY4E Chapter 9. Dictionaries (0) | 2022.08.08 |
---|---|
PY4E Chapter 8. Lists (0) | 2022.08.08 |
PY4E Chapter 6. Strings (0) | 2022.08.05 |
PY4E Chapter 5. Loops and Iterations (0) | 2022.08.05 |
PY4E Chapter 4. Functions (0) | 2022.08.02 |
댓글