Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
10-11 02:09
Archives
Today
Total
관리 메뉴

Developer_Neo

[python] 파일 입출력 본문

프로그래밍/Python

[python] 파일 입출력

_Neo_ 2022. 1. 16. 23:00
반응형

파일 열기

- 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
반응형
Comments