- 파일 생성하기 (쓰기)
다음 코드를 에디터로 작성해서 저장한 후 실행해 보자.
f = open("새파일.txt", 'w')
f.close()
프로그램을 실행한 디렉터리에 밑에와 같이 새로운 파일이 하나 생성된 것을 확인할 수 있다.
그렇다면 다음으로는 파일을 쓰기 모드로 열어 출력값을 적어보자.
(1).
f = open("새파일.txt", 'w')
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data) #print를 사용하지 않았다.
f.close()
또한 아래 코드와도 비교해보자
(2).
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
print(data)
위와 아래 차이점으로 첫번째 코드는 모니터 화면에 결과값을 출력하는 대신 f.write(data)를 통해 파일에 결과값을 적는 방법이다. 두 번째 코드는 print를 사용하여 기존처럼 모니터에 결과값을 출력해준다.
다시 돌아와서 첫번째 코드를 실행하면
에디터에서는 밑에와 같이 결과값이 나타날 수 있다.
이런 경우에는 encoding="UTF-8" 이라는 인자를 활용해서 한글이 깨지는 것을 막아준다.
f = open("새파일.txt", 'w', encoding="UTF-8")
for i in range(1,11):
data = "%d번째 줄입니다. \n" %i
f.write(data)
f.close()
- 파일 읽기 (읽기)
- readline() 함수 이용하기
f= open("새파일.txt", 'r', encoding="UTF -8")
line = f.readline()
print(line)
f.close()
위에서는 파일을 쓰고 저장하는 법을 다뤄보았다. 이제는 파일을 읽는 법을 다뤄보겠다. 위의 readline() 함수를 사용한 코드를 실행하면
1번째 줄입니다.
라는 결과가 나온다. 즉 위에서 만든 새파일.txt의 내용 중 첫 문장인 "1번째 줄입니다."를 읽고서 line에 저장하고 이를 print한 결과이다.
그렇다면 맨 앞의 한 문장 말고 파일의 모든 문장을 불러오고싶다면? readlines() 함수를 사용하면 된다.
f = open("새파일.txt", 'r', encoding="UTF -8")
lines = f.readlines()
for line in lines:
print(line)
f.close()
readlines함수는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다. 따라서 lines는 리스트는
["1 번째 줄입니다.\n", "2 번째 줄입니다.\n", ..., "10 번째 줄입니다.\n"]가 된다.
- read 함수 사용하기
세번째 방법은 read 함수를 사용하는 방법이다. 다음 예를 보자.
f = open("새파일.txt", 'r', encoding="UTF-8")
data = f.read()
print(data)
f.close()
f.read()는 파일의 내용 전체를 문자열로 돌려준다. 따라서 위 예의 data는 "새파일.TXT" 파일의 전체 내용이다.
- 파일에 새로운 내용 추가하기
쓰기 모드('w')로 파일을 열 때 이미 존재하는 파일을 열면 그 파일의 내용이 모두 사라지게 된다. 하지만 원래 있던 값을 유지하면서 단지 새로운 값만 추가해야 할 경우도 있다. 이런 경우에는 파일을 추가 모드('a')로 열면 된다. 에디터를 켜고 다음 소스 코드를 작성해 보자.
# adddata.py
f = open("새파일.txt",'a')
for i in range(11, 20):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
위 예는 새파일.txt 파일을 추가 모드('a')로 열고 write를 사용해서 결과값을 기존 파일에 추가해 적는 예이다. 여기에서 추가 모드로 파일을 열었기 때문에 새파일.txt 파일이 원래 가지고 있던 내용 바로 다음부터 결과값을 적기 시작한다.
댓글