입문자를 위한 파이썬 기초 #16. 파일 입출력
파일 생성
파일을 내용을 입력해 새 파일을 저장하고 파일의 내용을 가져와 출력하는 파일 입출력을 알아보자.
파이썬에서는 파일 입출력을 위해 open 함수를 사용한다. open 함수의 인자로 파일 이름과 옵션을 전달해 파일을 만들지 읽을지를 결정한다. 다음과 같이 소스코드를 입력하면 파일을 쓰기모드인 "w"로 열어 f에 담고 파일 입력을 종료한다. 즉, userfile.txt 이름의 파일을 만든다.
f = open("userfile.txt", 'w')
f.close()
파일을 만들고 내용은 입력하지 않았기 때문에 빈 파일이 만들어진다.
파일 쓰기
w로 모드로 파일을 열어 write 함수를 사용해 파일 내용을 입력한다.
f = open("userfile.txt", 'w')
f.write("data")
f.close()
파일 읽기
파일의 내용을 출력할 때는 읽기모드인 r로 열어 read() 함수를 사용한다. read() 함수는 전체 내용을 출력한다.
f = open("userfile.txt", 'r')
print(f.read())
f.close()
--- 출력 ---
data
만약 파일이 바이너리 형태인 경우는 바이너리 형태라고 알려주자. 읽을 때 모드에 'rb'를 사용한다.
f = open("파일명", 'rb')
print(f.read())
f.close()
내용 추가
내용 추가는 add의 약자인 a를 사용한다. 다음 예제는 파일을 가져와서 "추가 데이터"를 추가하고 파일 내용을 출력한다.
f = open("userfile.txt", 'a')
f.write("추가 데이터")
f.close()
f = open("userfile.txt", 'r')
print(f.read())
f.close()
상대 경로와 절대 경로
파이썬 파일을 읽을 때는 경로를 지정해야 한다. 이때 경로를 지정하는 방법은 상대 경로와 절대 경로의 두 방법이 있다. 읽을 혹은 쓸 파일이 같은 경로에 있으면 자세한 파일의 경로를 생략한다. 이는 상대 경로에 해당한다.
절대 경로
처음부터 모든 경로의 이름이 적혀있는 경로
- 리눅스는 '/'로 시작, 윈도우는 드라이브명:/로 시작. 예: C:/Users/username/Desktop/file.py
상대 경로
실행중인 프로그램 위치에서 바라보는 상대적인 위치
- 현재 경로 : /
- 상위 경로 : ../
- 파일명만 있으면 : "파일명"
간단한 경로 예제를 살펴보자. 파이썬 파일은 앞서 사진에서 보듯 다음 경로에 존재한다.
C:/Users/dsz08/Desktop/file.py
다음은 절대 경로 방식으로 userfile.txt의 내용을 가져온다.
f = open("C:/Users/dsz08/Desktop/userfile.txt", 'r')
print(f.read())
f.close()
상대 경로면 생략이 가능하고
f = open("userfile.txt", 'r')
바로 위 폴더(디렉터리)에 있는 my_example.txt를 가져올 때 길게 C:.. 의 전체 경로인 절대 경로 대신 간단히 다음과 같은 상대 경로를 이용할 수 있다.
f = open("../my_example.txt", 'r')
print(f.read())
f.close()
with을 사용한 파일 입출력
파일 입출력 수행 후 반드시 f.close()로 닫아주어 메모리 누수를 막아야 한다. 이때 with 구문을 사용하면 close() 없이 능동적으로 파일을 여닫는다.
with open("userfile.txt","w") as f:
f.write("test1234")
with open("userfile.txt","r") as f:
print(f.read())