-파일 읽기
open 으로 열면 파일 스트림을 반환한다.
read() : 파일 전체 내용을 한 번에 읽어온다.
따라서 각 행을 하나씩 처리하기보다는 파일 전체의 내용을 다루어야할 때 사용함
readline() : 파일의 내용을 한 줄씩 읽어옴 파일에 몇 줄이 있는지 모름 , while 문과 함께 써주어야함
readlines() : 파일의 내용을 한 줄씩 리스트 형태로 가져옴.
'''
파일 포맷 종류
1. .txt 파일 읽기/ 쓰기
2. .csv 파일 읽기/ 쓰기(,(쉼표)로 구분된 문자열 의미)
예> 홍길동,20,서울
.json 파일 읽기/쓰기 (json:javascript object notation, 자바스크립트에서 사용하는 객체 표현식, 매우 범용적으로 사용됨)
==> 현재 사용중인 프로그램 언어의 공통 포맷임.
==> {"key":"value","key":value}
파일 읽기/쓰기
open ("파일 경로",mode)
mode:"r":읽기
"w":쓰기(덮어쓰기)
"a":쓰기(추가,append)
close()
파이썬 프로그램 ---------------------> 파일 (txt.csv,json 등 )
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__',
'__dict__', '__dir__', '__doc__', '__enter__', '__eq__',
'__exit__', '__format__', '__ge__', '__getattribute__',
'__gt__', '__hash__', '__init__', '__init_subclass__',
'__iter__', '__le__', '__lt__', '__ne__', '__new__',
'__next__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'_checkClosed', '_checkReadable', '_checkSeekable',
'_checkWritable', '_finalizing',
'buffer', 'close', '
closed', 'detach', 'encoding', 'errors', 'fileno',
'flush', 'isatty', 'line_buffering', 'mode', 'name',
'newlines', 'read', 'readable', 'readline', 'readlines',
'reconfigure', 'seek', 'seekable', 'tell', 'truncate',
'writable', 'write', 'write_through', 'writelines']
print(dir(f))
'''
#1. 읽기
f=open("./resourse/aaa.txt","r",encoding="utf-8")
line=f.readline()
print(line)
f.close()
print("$"*150)
#2. with문 (*****)
'''
with문은 자동으로 close 해줌
with open("./resourse/aaa.txt","r",encoding="utf-8") as f
line=f.readline()
print(line)
'''
with open("./resourse/aaa.txt","r",encoding="utf-8") as f:
line=f.readline()
print(line)
print("$"*150)
#3. f.readline() 모두 읽기==> 반복문 처리
with open("./resourse/aaa.txt","r",encoding="utf-8") as f:
while True:
line=f.readline()
if not line:break #line 빈문자열이면 false -> 부정하면 True
print(line,end="")
print("$"*150)
#4. f.read()
with open("./resourse/aaa.txt","r",encoding="utf-8") as f:
xxx=f.read()#f.read([글자개수])
print(">>>",xxx)
#5. readlines()
with open("./resourse/aaa.txt","r",encoding="utf-8") as f:
xxx=f.readlines()
for line in xxx:
print(line,end="")
print("$"*150)
#6. 파일이 없을 때 예외가 발생함 ==>FileNotFoundError
try:
with open("./resourse/aaa2.txt","r",encoding="utf-8") as f:
line=f.readline()
print(line)
except FileNotFoundError as e:
print("파일이 없습니다. 확인하세요")
print("end 정상종료")
readline() 반복문 예시에서 if문의 조건문에 주어진 line은 bool 형의 자료가 아닌 것을 확인 할 수 있는데,
조건문에 bool이 아닌 것이 주어졌을 때 숫자는 0, 문자열은 빈 칸("")인 경우 False로 인식한다.
따라서 line에 아무것도 없는 빈 칸이 읽힌 경우 즉, 파일의 끝에 도달하여 더 이상 읽을 것이 없을 때
line은 False로 인식되고 not line이 not False가 되어 True로써 작동하는 것입니다.
write(): 파일에 한 줄을 쓸 때 사용 반복문을 사용하여 여러줄을 기록 할 수 있다.
writelines(): writelines는 리스트에 들어있는 문자열을 파일에 쓸 때 사용한다.
특히 writelines를 사용할 때는 반드시 리스트의 각 문자열 끝에 개행 문자 \n을 붙여주어야 하는데, 그렇지 않으면 문자열이 모두 한 줄로 붙어서 저장되므로 주의해야 한다.
#1. 쓰기=> 파일이 없으면 자동으로 생성함
with open("./resourse/bbb.txt","w",encoding="utf-8") as f:
f.write("hello")
print("#"*150)
#2. 쓰기=> 파일이 없으면 자동으로 생성함 "a"모드는 append 됨
with open("./resourse/bbb2.txt","a",encoding="utf-8") as f:
f.write("hi")
print("#"*150)
#3. 쓰기=> print() 함수이용
with open("./resourse/bbb4.txt","a",encoding="utf-8") as f:
print("world4\n",file=f)
print("#"*150)
#4. 쓰기=> writelines(["a","b",....])
with open("./resourse/bbb4.txt","a",encoding="utf-8") as f:
xx=["hello",'A']
xx="\n".join(xx)
f.writelines(xx)
print("#"*150)
일반적으로 파일을 w 모드로 열게 되면 다시 프로그램을 했을 때 처음 내용이 없어지고
새로운 문장이 파일에 기록되는데 a 모드로 열게되면 실행할 때마다 원본 파일에 계속해서 추가 된다.
'python' 카테고리의 다른 글
| [numpy] 1차원 배열 - 벡터 (1) | 2022.09.28 |
|---|---|
| [numpy] 0차원 배열 스칼라 (0) | 2022.09.28 |
| [python] 날짜 데이터 (0) | 2022.09.27 |
| [python] 예외 처리 (0) | 2022.09.27 |
| [python] 강제성 부여 추상클래스 | 매직 메서드 (0) | 2022.09.26 |