폴더 이동하기와 더불어서 파일의 입출력이 중요한 이유
파이썬으로 작업한 결과물을 눈으로 곧바로 확인이 가능하다
처음 프로그래밍을 배울 때 만드는 파일 :txt
csv
파일
일반 컴퓨터에서는 파일 내용을 확인하려면 파일을 더블 클릭하기만 하면 되는데
이는 특정 폴더에서 특정 파일을 특정한 목적으로 불러오는 여러 단계의 과정이 포함되어 있다.
open() 함수
파일 객체 = open('파일 이름', '파일 열기 모드')
open() 함수
예시a.txt
라는 새 파일을 '쓰기'모드로 생성하기
>>> f = open('a.txt', 'w')
f
객체 이름 지정하는 이유그냥 open() 함수
로 파일을 열면 될 것 같은데 f
라는 객체(다른 이름도 가능)에 왜 넣을까?
특정 객체 이름을 지정하지 않고 그냥 open() 함수
로 명령을 내려도 파일은 열린다
파일 작업을 할 때에는 폴더를 같이 띄어 놓고 파일이 있는지 없는지를 수시로 확인하면 좋다
oprn('a.txt', 'w')
를 실행하면 현재 위치한 폴더에 a.txt
파일이 생성된 것을 확인할 수 있다
이 상태에서 a.txt
파일에 또 다른 명령어를 넣으려면
open('a.txt', 'w').write('abc')
와 같이 복잡한 코드를 만들어야 되는데
# a.txt 파일에 abc라는 문자열을 쓴다
>>> open('a.txt', 'w').write('abc')
# 3 : 입력한 문자의 개수가 출력된다
앞으로 a.txt
파일을 사용해 여러 작업을 할 때마다 긴 명령어로 파일을 여는 것을 불편하므로
f
와 같이 간단한 이름의 객체에 파일을 여는 명령을 미리 저장하고 사용하는 것이다
파일 열기 모드 | 의미 |
---|---|
w | 파일에 내용을 새로 쓸 때 사용한다 |
r | 파일 내용을 읽을 때 사용한다 |
a | 파일에 내용을 추가할 때 사용한다 |
파일 쓰기 vs 읽기
쓴다 : 파일을 새로 만들어서 쓴다
읽다 : '이미 그 파일이 있다'는 것을 전제로 한다
그러므로 해당 경로에 있는 파일 이름을 정확하게 입력해야 명령어가 작동되며
파일 이름을 잘못 입력하면 오류가 발생한다
w
가장 간단하게 글을 쓰는 방법은 write() 함수
사용
이미 a.txt
파일을 쓰기(w
)모드로 열어서 f
라는 객체에 지정했으므로
f
에 바로 명령어를 입력해주면 아무 글이나 쓸 수 있다
>>> f = open('a.txt', 'w')
>>> f = write('나는 오늘 학교에 갔다.')
13 # 정상적으로 입력됨, 입력한 문자의 개수
>>> f.close() # 파일 닫기를 꼭 해줘야 한다
r
read() 함수
사용>>> f = open('a.txt', 'r')
>>> f.read()
'나는 오늘 학교에 갔다.'
>>> f.read()
``
f.read()
한 번 vs 두 번f.read()
를 입력하면 '나는 오늘 학교에 갔다.'
라는 내용이 나오지만f.read()
를 했을 때에는커서의 위치 찾기
seek()
사용
예) 문서의 가장 처음으로 가고 싶다면f.seek(0)
명령
>>> f.seek(0)
0
>>> f.read()
'나는 오늘 학교에 갔다.'
>>> f.close()
>>> f = open('b.txt', 'r')
Tracback (most recent call last):
File "<pyshell#15>", line 1, in <module>
f = open('b.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'b.txt'
f.read()
로 읽는 내용은 문자열 str
형태로 저장된다 (리턴된다)f.read()
를 통해 읽은 내용을 다른 객체에 저장한다면 문자열을 가공할 때 쓰는 모든 기능을 편리하게 활용 가능>>> f= open('a.txt', 'r') # a.txt 파일을 읽기 모드로 열기
>>> diary = f.read() # f.read() 결과값을 diary로 저장
>>> print(diary) # 저장된 값이 문자열이라 출력 가능함
나는 오늘 학교에 갔다
>>> print(diary[:5]) # 내용의 일부만 슬라이싱을 해서 출력할 수도 있다
나는 오늘
>> f.close() # 파일을 다 쓴 후 닫아준다
a
모든 파일을 읽기와 쓰기로 불러내고 출력하는 것이 가능하니,
추가는 굳이 필요할까 싶을텐데
간편하게 파일 맨 마지막에 우리가 원하는 내용을 쉽게 추가할 때는 추가모드를 사용하는 것이 편리하다
>>> f = open('a.txt', 'a')
>>> f.write(' 학교에 가지 않을 날이 올까?')
16
>>> f.close()
>>> f = open('a.txt', 'r')
>>> f.read()
'나는 오늘 학교에 갔다. 학교에 가지 않을 날이 올까?'
>>> f.close()
파일을 열었다면 파일을 다시 꼭 닫아야 한다
1. 파일을 닫지 않은 상태에서 연습했던 파일을 지우려고 시도하면 파일을 지울 수 없다는 메시지가 뜬다
2. 닫지 않은 상태에서 읽기 모드로 다시 여는 등 다른 작업을 하려고 하면 오류가 발생한다
3. 정상적으로 파일이 닫히면 >>>
만 다시 나타난다
>>> f = open('a.txt', 'w')
>>> f.close()
>>>