Archive

[파이썬 기초] 파일 처리 본문

공부/Python

[파이썬 기초] 파일 처리

mariabeetle 2017. 10. 2. 23:02

1. 파일 읽고 쓰는 순서

- 파일을 연다. open()

# encoding

1
2
3
# encoding옵션을 주고 열자. (보통 utf-8, 한글이 진다면 euc-kr 해보자)
a_file = open("textfile.txt", encoding="utf-8")
a_file = open("textfile.txt", encoding="euc-kr")
cs

- 파일을 읽고 쓴다. read()/write()

- 파일을 닫는다. close()


2. 파일을 열고 쓰는 간단한 예제

1
2
3
4
5
6
7
8
9
10
# 파일을 열자
a_file =open("test.txt", mode="w", encoding="utf-8")
 
# 파일에 내용을 쓰자
a_file.write("나는 실패해본 적이 없다.\n")
a_file.write("1만 가지의 방법을 찾아냈을 뿐이다. \n")
a_file.write("- 토마스 에디슨\n")
 
# 파일을 닫는다
a_file.close()
cs

- mode의 값

# w : 파일을 쓰기 모드로 연다.

# r : 파일을 읽기 모드로 연다.

# a : 쓰기 모드로 열고 파일이 존재하면 가장 끝부분에서 쓰기 시작한다.

# b : 바이너리모드

# t : 텍스트 모드(기본값)

- 쓰기 작업을 할 때 mode에 기본적으로 'r'이 암묵적으로 지정된다.


3. 파일을 읽고 쓸 때 try.. finally..로 확실하게 하자.

1
2
3
4
5
6
7
8
9
10
# 파일을 열자
a_file =open("test.txt", mode="w", encoding="utf-8")
 
try:
    a_file.write("나는 실패해본 적이 없다.\n")
    a_file.write("1만 가지의 방법을 찾아냈을 뿐이다. \n")
    a_file.write("- 토마스 에디슨\n")
 
finally:
    a_file.close()
cs


4. with구문을 사용해 간단하게 하자.

- with구문을 사용하면 try.. finally.. 사용하지 않아도 자동으로 마지막에 close()메서드를 호출한다.

1
2
3
with open("test.txt", mode="w") as f:
    f.write("나는 실패해본 적이 없다.\n")
    f.write("1만 가지의 방법을 찾아냈을 뿐이다.\n")
cs


5. 텍스트 파일을 1행씩 읽어서 처리하자.

- 한 행씩 처리하려면 for구문을 사용하자.

1
2
3
4
with open("test.txt", encoding="utf-8") as tf:
    for line in tf:
        # 1줄씩 프린트한다.
        print(line)


cs

- 예제

1
2
3
4
5
6
7
8
9
# 텍스트파일에서 키워드 검색
key = "find"
with open("test.txt", encoding="utf-8") as tf:
    # file 한줄씩 읽을때 enumerate() 함수를 사용하자.
    # enumerate()사용하면 인덱스 번호와 한줄을 읽어옴.
    for i, line in enumerate(tf):
        # find()는 위치를 리턴함. -1이면 없다는뜻.
        if line.find(key) >= 0:
            print(i+1":", line)
cs

- read()를 사용하면 모든 데이터를 메모리에 읽어들인다. 읽어들이는 파일이 너무 크다면 오류가 발생할 수 있고, 이를 방지하기 위해 한 행씩 읽어들인다.


6. json 모듈 사용하기

- 리스트나 Dictionary와 같은 데이터 형을 저장할 때 JSON 형을 사용하자.

- json.dump(obj) : obj를 JSON문자열로 변환한다.

- json.load(json) : JSON문자열을 파이썬 오브젝트로 변환한다.

- json.dump(obj, fp) : obj를 JSON 형으로 파일에 저장한다.

- json.load(fp) : JSON형 파일(fp)에서 데이터를 읽어 들인다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import json
 
# Dictionary형 데이터
data = {
    "no" : 5# 수치형 데이터
    "code" : ("jas"119), # 튜플형 데이터
    "scr" : "be quit to listen, slow to speak. slow to anger"# 문자열
}
 
# 파일에 쓰기
filename = "test.json"
with open(filename, "w") as fp:
    json.dump(data, fp)
 
# 파일에서 읽어오기
with open(filename, "r") as fp:
    r = json.load(fp)
    print("no=",r["no"])
    print("code=", r["code"])
    print("scr=", r["scr"])
cs


'공부 > Python' 카테고리의 다른 글

[파이썬 기초] 리스트 내장 표기  (0) 2017.10.03
[파이썬 기초] 정규표현  (0) 2017.10.03
[파이썬 기초] 모듈  (0) 2017.10.02
[파이썬 기초] iterator, generator  (0) 2017.10.02
[파이썬 기초] 익명함수  (0) 2017.10.02
Comments