파일에 문자열 쓰기
- 파일객체 = open(파일이름, 파일모드)
- 파일객체.write('문자열')
- 파일객체.close()
file = open('hello.txt', 'w') # hello.txt 파일을 쓰기 모드(w)로 열기. 파일 객체 반환
file.write('Hello, world!') # 파일에 문자열 저장
file.close() # 파일 객체 닫기
이때 open() 함수는 이미 있는 파일을 열수도 있지만 없는 파일을 생성하는 기능도 한다.
파일의 문자열 읽기
- 파일객체 = open(파일이름, 파일모드)
- 파일객체.read('문자열')
- 파일객체.close()
file = open('hello.txt', 'r') # hello.txt 파일을 읽기 모드(r)로 열기. 파일 객체 반환
s = file.read() # 파일에서 문자열 읽기
print(s) # Hello, world!
file.close() # 파일 객체 닫기
#마지막 두 순서 바꿔보기
file = open('hello.txt', 'r')
s = file.read()
file.close()
print(s)
# 상위 두 코드로 이미 s 변수에 정보가 할당 되어서 결과는 같다.
자동으로 파일 객체 닫기
with open(파일이름, 파일모드) as 파일객체:
코드
with open('ding.txt','w') as file:
file.write('ding')
#상위 코드 작성후 따로 한번 더 작성
with open('dind.txt','r') as file:
s = file.read()
print(s)
#결과
ding
#붙여서 작성한다면?
with open('ding.txt','w') as file:
file.write('ding')
with open('dind.txt','r') as file:
s = file.read()
print(s)
#문법 오류가 발생한다.
반복문으로 여러 줄을 파일에 쓰기
with open('hello.txt', 'w') as file:
for i in range(3): #3번을 반복
file.write('Hello, world! {0}\n'.format(i))
#hello world를 줄을 바꿔서 반복 마지막엔 i를 붙임
#결과
Hello, world! 0
Hello, world! 1
Hello, world! 2
리스트에 있는 문자열을 파일에 쓰기
- 변수 = 파일객체.writelines()
lines = ['안녕하세요.\n', '파이썬\n', '코딩입니다.\n'] #줄을 바꾸기 위해
with open('hello.txt', 'w') as file:
file.writelines(lines)
#결과
['안녕하세요.\n', '파이썬\n', '코딩입니다.\n']
#리스트 형태로 출력 된다.
파일의 내용을 한 줄씩 읽기
with open('hello.txt', 'r') as file:
line = None
while line != '': #라인의 내용이 없을때까지 출력
line = file.readline()
print(line.strip('\n'))
#결과
안녕하세요.
파이썬
코딩입니다.
- line = None 을 사용하는 이유
- line = '' 이라면 line != '' 이 거짓이 되기때문에 반복문이 작동하지 않는다.
- .strip('\n') 을 사용한 이유
- 반복문임으로 print()를 반복한다 즉 계속 줄이 바뀌기때문에 '\n'을 삭제하지않으면 한줄의 공백이 더 생긴다.
변수 여러개에 언팩킹 하기
file = open('abc.txt','r')
a,b,c = file #변수의 갯수는 파일에 저장된 문자열의 줄 수와 일치해야한다.
a,b,c
('안녕하세요.\n', '파이썬\n', '코딩입니다.\n')
- 파일 객체는 이터레이터 이기때문에 가능하다
'Python > 기초문법' 카테고리의 다른 글
(23)함수 사용하기 (0) | 2022.04.06 |
---|---|
(22)회문 & N-gram (0) | 2022.04.06 |
(20)세트 (0) | 2022.04.04 |
(19)딕셔너리 활용하기 (0) | 2022.04.03 |
(18)서식 지정자 & 포맷 메서드 (0) | 2022.04.02 |