Python 파일 read, write mode

Grace Goh·2022년 9월 18일
0

Python

목록 보기
18/24

쓸 때 write

# "c:\\temp\\...\\sample.txt" 전체경로를 생략하면 현재 폴더 하위에 생김.
file = open("sample.txt", mode="w", encoding="utf-8")
file.write("안녕 파이썬")
file.close() # 중요! close하지 않으면 다른 프로그램이나 객체에서 접근 못 하는 현상 생김.

# sample.txt

읽을 때 read

readfile = open("sample.txt", mode="r", encoding="utf-8") 
content = readfile.read() # 변수에 담음.
readfile.close()

print(content)
# 안녕 파이썬

  • 텍스트 모드 mode="wt" "rt"

  • 바이너리 모드 : 데이터를 가공하지 않은 raw한 상태.
    유니코드..

    • 인코딩 : encoding="utf-8"
    • 디코딩 : utf-8로 저장한 파일을 그냥 r 모드를 주면 기본 ANSI 모드로 열려고 하기 때문에 오류가 생긴다. 인코딩된 유니코드 문자열을 디코딩 없이 읽으려고 한 것.
  • 영어 : 아스키 모드로 저장되기 때문에 인코딩하지 않아도 오류 없이 실행된다.



with

open close 대신 많이 쓴다. 파일, 데이터베이스 등에 사용된다. 사용법이 단순하므로 실무에서 그때그때 확인한다.

class 내부의 enter, exit 함수가 자동 호출된다. with문 내에서 file을 사용하고, with문 다 쓰고 빠져나가면 file 객체는 자동 소멸되어 따로 close하지 않아도 된다.

as 변수(닉네임)

with open("sample.txt", mode="r", encoding="utf-8") as file:
	print(file.read())
with open("sample.txt", mode="r", encoding="utf-8") as s, \
	 open("sample2.txt", mode="w", encoding="utf-8") as t:
	# t.write(s.read())
    t.write(s.read().replace("파이썬", "python"))
    # s를 읽어서 바로 t에 write한다. 단어 교체헤서 t에 저장한다.

sample2.txt가 생성되었고 '파이썬'이 영문으로 바뀌었다.

2개 파일을 각각 r 모드와 w 모드로 열어서 읽고 쓰고를 동시에 처리할 수 있다.
줄이 길어질 때 , 뒤에 \를 쓰면 오류 없이 실행된다.



내용이 많을 때,

# 1라인만 읽기
readfile = open("sample.txt", mode="r", encoding="utf-8") 
content = readfile.read() 
readfile.close() # close하기 때문에 1줄만 읽고 끝난다.

print(content)


# 1라인씩 읽기 (for문 사용)
readfile = open("sample.txt", mode="r", encoding="utf-8") 

for l in readfile:
    print(l)

readfile.close() # 다 읽고 나선 close!

파일을 읽을 때는 파일포인터가 읽어준다.
# 10글자만 읽기.
readfile = open("sample.txt", mode="r", encoding="utf-8") 

a = readfile.read(10) # 처음 10글자!
print(a)
# print(readfile.tell()) 파일포인터 위치. 24.

readfile.seek(0) # 파일포인터 다시 0번째로 위치시키고
a = readfile.read(10) # 그 다음 10글자 출력하면
print(a) # 같은 10글자가 2번 찍히게 된다.
readfile.close()
profile
Español, Inglés, Coreano y Python

0개의 댓글