Zeta Oph's Study

[Python 기초 문법] 텍스트 프로세싱 본문

프로그래밍/Python

[Python 기초 문법] 텍스트 프로세싱

Zeta Oph 2024. 3. 4. 00:27
planets.txt

Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

 

위와 같은 예시 텍스트 파일로 설명하겠다.


파일객체

open 함수에 의해 반환되는 객체 - 파이썬 환경에서 텍스트 파일을 읽고 쓸 수 있도록 지원해줌

 

텍스트 파일을 처리하는 모드

mode 인자 설명
'r' read mode. 경로의 파일을 호출하여 읽는 것만 가능.
경로에 파일이 없다면 에러 발생
'w' write mode. 파일에 내용을 쓸 수 있는 모드.
경로에 파일이 없다면 새로운 파일 생성, 경로에 파일이 있다면 덮어쓰기 됨.
내용 중간부터 작성 불가
'a' append mode. 쓰기모드
'w'와 다르게 기존 파일이 존재하면 기존 내용 유지한 채 이어서 작성
'x' 경로에 파일이 없으면 'w' 모드, 파일이 있다면 에러 발생
'b' binary mode.
+ 'r+', 'w+', 'a+' 와 같이 사용. 읽기 쓰기 모두 가능해짐

 

파일객체는 open 함수와, close 함수로 열고 닫을 수 있다.

f = open(file_path, mode)
f.close()

 

open 함수로 연 f가 파일 객체가 되는 것이다.

mode 자리에 위의 'r', 'w' 등을 써넣으면 된다.

작업이 종료되는 close 하는 것이 파일을 안전하게 닫을 수 있다.


파일 쓰기 : 'w' 모드 / 'a' 모드

* 파일 객체 이름을 f로 하고 설명하겠다.

 

f.write(str) : 문자열 str을 파일에 작성

f.writelines(list) : list의 값을 파일에 작성. 리스트 원소를 순서대로 공백 없이 작성함

(공백 등을 삽입하고 싶으면 .join 함수 등 사용)

 

줄바꿈(Enter) : \n

탭(Tab) : \t

위 공백 문자를 통해 줄바꿈(Enter)과 탭(Tab)을 사용할 수 있다.

'w' 모드이면 모든 내용 삭제 후 처음부터 작성, 'a' 모드이면 끝에부터 이어서 작성이다.

f = open("test.txt", 'w')

f.write("1234\n")
f.write("abcd")

f.close()
test.txt

1234
abcd

파일 읽기 : 'r' 모드

* 마찬가지로 파일 객체 이름을 f로 하고 설명하겠다.

 

f.read() : 파일 내용 전체 읽기 - 결과값 단일 문자열로 반환

f.readline() : 개행문자 \n을 기준으로 line 하나를 읽어옴 (\n은 포함 X) - 결과값 단일 문자열로 반환

f.readlines() : 파일 내용 전체 읽어옴. 개행문자 \n을 기준으로 분리됨 (\n이 원소의 맨끝이 되도록) - 결과값 리스트 반환

 

for문과 in 연산자를 사용해서도 읽을 수 있다.

for line in f:
    ...

 

위와 같은 코드는 f.readlines()가 반환한 리스트에서 원소를 하나씩 뽑아내는 것과 같은 기능을 한다. 다만 readlines 함수는 한꺼번에 내용을 읽어오는 반면, 위 방법은 하나씩 읽어오므로 중간에 break로 빠져나갈 수 있다는 장점이 있다.

공백문자를 따로 제거해주지는 않으므로 .strip() 함수를 통해 제거해주어야 한다.

 

f = open("planets.txt", 'r')

for line in f:
    name = line.strip().upper()
    print(name, end=' ')
f.close()
TERMINAL

MERCURY VENUS EARTH MARS JUPITER SATURN URANUS NEPTUNE