Developer_Neo
[python] 파일 입출력 본문
반응형
파일 열기
- open()함수
파일 객체 = open(파일명, 모드)
파일 열기가 성공하면 파일객체가 하나 생성된다.
open() 함수의 반환값은 파일 객체임 그리고 이 파일 객체는 iterable하다
모드
읽기 모드 | r | 파일로부터 데이터를 읽어오기 위해 사용하는 모드 |
쓰기 모드 | w | 파일에 데이터를 저장하기 위해 사용하는 모드 없는 파일명 넣으면 새로 파일 생성 이미 존재하는 파일명 넣으면 기존의 파일 내용 모두지우고 새로운 데이터 저장 |
추가 모드 | a | 파일에 데이터를 추가하기 위해 사용하는 모드 이미 존재하는 파일 넣으면 기존내용그대로 두고 파일의 끝에 새로운 내용 추가 존재하지 않는 파일 넣으면 새로운 파일 생성후 내용 저장 |
'''
movie.txt
Alice in Wonderland is a fantasy adventure film.
It is directed by Tim Burton.
The film was produced by Walt Disney Pictures.
It was shot in the United Kingdom and the USA.
'''
f = open('movie.txt', ‘r’)
contents = f.read( )
print(contents)
f.close()
'''
[결과]
Alice in Wonderland is a fantasy adventure film.
It is directed by Tim Burton.
The film was produced by Walt Disney Pictures.
It was shot in the United Kingdom and the USA.
'''
f = open(‘movie.txt’, ‘r’)
for line in f:
print(line)
#이것도 똑같은 결과이다.
- 파일로부터 데이터를 읽어 올 때 사용하는 메소드 – read(), readline(), readlines()
- 파일에 데이터를 저장할 때 사용하는 메소드 – write(), writelines()
read() 메소드
- 파일의 내용을 통째로 문자열로 읽어옴
'''
파일의 내용을 문자열로 읽어 오는 메소드.
인수는 없거나 한 개임. 읽어온 데이터를 문자열로 반환
만약 인수가 있는 경우 정수로 들어갈 수 있으며 읽어 오려는 문자의 개수를 넣는 것이다.
'''
'''
< 파일 python.txt >
Python is a widely used high-level programming language.
It is created by Guido van Rossum.
It is released in 1991.
'''
f = open('python.txt')
contents = f.read( )
words = contents.split( ) # contents를 스페이스로 잘라 리스트 words에 저장
print("words in 'python.txt' : {}".format(len(words)))
# print("words in 'python.txt' : {}".format(len(open('python.txt').read( ).split())))
f.close()
'''
[결과]
words in 'python.txt' : 20
'''
f = open('python.txt') # 파일 열기
contents = f.read(15) # 파일에서 15문자 읽기
print(contents)
print('-' * 15)
readline( )
- 한 줄씩 읽어 오는 메소드
'''
readline(m)
인수가 한개인 경우로 m개의 문자를 읽어온다.
m이 한 줄의 문자 수보다 크다면 그냥 한줄만 읽어온다.
'''
strip( )
- 문자열 맨앞과 맨뒤의 whitespace(‘ ‘, ’\t’, ‘\n’) 제거
with ~ as 구문을 사용하면 f.close()는 없어도 된다.
with open('파일명', 모드) as f :
s = f.read( ) # 들여쓰기
print(s)
한글읽기 >> encoding='utf-8'
'''
< 파일 greet.txt >
안녕하세요.
만나서 반갑습니다
'''
f = open('greet.txt', encoding='utf-8')
c = f.read( ) #’ansi’
print(c)
f.close( )
'''
[결과]
안녕하세요.
만나서 반갑습니다
'''
seek()메소드
파일끝은 EOF로써
총 256바이트라고 한다라고 가정해보자
tell() 메소드
- 파일의 시작부터 현재 오프셋을 바이트 단위로
'''
파일객체명.seek(offset, from_what = 0)
from_what = 0 : 파일 처음
From_what = 1 : 현재 위치
From_what = 2 : 파일 끝
'''
f = open('python.txt')
c = f.read( )
print(c)
f.seek(0,0) # seek(0,0)파일의 맨 처음으로 파일 객체를 이동
c = f.read( )
print(c)
f.close( )
fin = open('C:\test\test.bin', 'rb') //예) 256바이트 이진파일
fin.seek(-1, 2) //255, 파일의 마지막에서 1바이트 전 위치로 이동
fin.tell() //결과 : 255
fin.seek(254, 0) //254, 파일의 마지막에서 2바이트 전 위치로 이동
fin.tell() //결과 : 254
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[python] 클래스 및 예외처리 (0) | 2022.01.17 |
---|---|
[python] 모듈, random모듈, itertools모듈 (0) | 2022.01.17 |
[python] 람다함수 및 파이썬 내장함수 (0) | 2022.01.16 |
[python] 함수 정의, main문 , 지역변수와 전역변수(global키워드) (0) | 2022.01.16 |
[python] 사전 만들기, 연산자, 함수, 메소드 (0) | 2022.01.16 |
Comments