TIL : Python 파일 읽고 쓰기

Nemo·2021년 4월 7일

TIL

목록 보기
1/3

파일 생성하기

f = open("practice.txt", "w") 

for i in range(1,11):
	f.write("No.%d\n" % i)

'practice' 이라는 파일명을 가진 텍스트 파일에

No.1
No.2
No.3
No.4
No.5
No.6
No.7
No.8
No.9
No.10

값을 출력한다.

파일 내용 추가하기

f. open("practice.txt", "r")
data = f.read()
f.close()
data = data + "No.11\n"
datas = data.split("\n)
f = open("practice.txt", "w")
for line in datas:
	f.write(line +"\n")
 f.close()

f.read()는 파일 내용을 그대로 가져온다.
주의) data.split("\n")에 의해 행을 기준으로 문자열이 리스트화 된다.

datas = ['No.1','No.2','No.3','No.4','No.5','No.6','No.7','No.8','No.9','No.10','No.11']

요솟값이 'No.n\n'로 구성되는게 아니기 때문에, 다시 "\n"을 해 주어야 줄바꿈이 된다.

주의) 파일을 쓰기모드("w")로 열면 해당 파일이 이미 존재할 경우 원래 있던 내용이 모두 사라진다.

사실 이 방법보다는 점프투파이썬에 나온 파일을 추가 모드 ('a')로 열어서 하는 방법이 더 간편하다.

f = open("practice.txt", "a")
data = "No.11"
f.write(data)
f.close()

프롬프트 활용하기

filename = input("불러올 파일명을 입력하시오. : ")
f = open(filename, "r")
lines = f.readlines()
print(lines)
f.close()
data = input()
lines.append(data)
f = open(filename, "w")
for line in lines : 
	f.wirte(line)
f.close()

f.readlines() 는 파일에 있는 모든 line을 리스트로 불러온다.
따라서 print(lines)에 의해

['No.1\n', 'No.2\n', 'No.3\n', 'No.4\n', 'No.5\n', 'No.6\n', 'No.7\n', 'No.8\n', 'No.9\n', 'No.10\n']

가 프롬프트에 출력이 된다.
프롬프트에 N0.11을 입력하면, append 함수에 의해 리스트 lines는

['No.1\n', 'No.2\n', 'No.3\n', 'No.4\n', 'No.5\n', 'No.6\n', 'No.7\n', 'No.8\n', 'No.9\n', 'No.10\n', 'No.11']

가 된다.

읽거나, 추가의 개념이 아닌 리스트 line을 기존의 파일내용처럼 나열해서 쓰고자 하는 것임으로 "w"로 파일을 열어주고 (기존에 있던 파일을 'w'모드로 열었으므로, 기존에 적혔던 내용은 사라진 상황이다.) for문을 사용하여 리스트의 요소값을 나열, f.wirte 함수를 사용하여 작성해준다.

practice.txt를 열면 No.11값이 추가되어 있음을 확인 할 수 있다.

주의) f.realines에 따라서 파일에 있는 모든 line들이 리스트로 불러와질 때, 'No.n'이 아니라 'No.n\n'의 값으로 불러와진다. split("\n")함수와 착각하지 말 것.

profile
느리더라도 꾸준하게, 성실히.

0개의 댓글