just inside

[python] 파일 읽고 쓰기 본문

LG U+ Why Not SW camp/python

[python] 파일 읽고 쓰기

방울도마도 2024. 7. 12. 16:57
728x90

파이썬 파일 처리 함수

파일 열기 : open(), file.close()

  • 파일 모드
    • "r" : 읽기 모드. 파일이 존재하지 않으면 에러 발생
    • "w" : 쓰기 모드. 파일이 존재하지 않으면 새로 생성, 기존 파일 존재시 덮어씀
    • "a" : 추가 모드. 파일이 존재하지 않으면 새로 생성, 기존 파일 존재시 내용 뒤에 추가
# 새파일 만들기 (현재 작업디렉토리에 생성)
# newfile.py
f = open("새파일.txt", 'w')
f.close()
# mkdir c:\doit
# dir c:\doit
# 특정 디렉토리에 newfile2.py
f = open("C:/doit/새파일.txt", 'w')
f.close()

 

파일 만들기(쓰기) : write(), writelines()

  • file.write() : 파일에 문자열을 쓰기
  • file.writelines() : 문자열 리스트를 파일에 쓰기
# 파일을 쓰기 모드로 열어 내용 쓰기
# C:/doit/새파일.txt 파일에 for loop 명령의 실행결과가 저장됨
f = open("C:/doit/새파일.txt", 'w')
for i in range(1, 11):
	data = "%d번째 줄입니다.\n" % i
    f.write(data) # 파일에 기록
f.close()

# 실행후 DOS 명령으로 확인
type C:\doit\새파일.txt
1번째 줄입니다.
∙∙∙
10번째 줄입니다.


# 인코딩 포함하여 만들기
f = open("새파일.txt", 'w', encoding="UTF-8")
for i in range(1, 11):
	data = "%d번째 줄입니다.\n" % i
    f.write(data) # 파일에 기록
f.close()

 

파일 읽기 : read(), readline(), readlines()

  • file.read() : 파일의 전체 내용 읽기
  • file.readline() : 파일의 한 줄 읽기
  • file.readlines() : 파일의 모든 줄 읽어 리스트로 반환
# readline_test.py
f = open("C:/doit/새파일.txt", 'r')
line = f.readline() # 파일 한 줄 읽기
print(line)
f.close()

# 반복문 이용해서 전체 라인 읽어 출력
f = open("C:/doit/새파일.txt", 'r')
while True:
	line = f.readline()
    if not line: break
    print(line, end="")
f.close()

# readlines : 각각의 줄을 요소로 갖는 리스트 반환
f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
	print(line)
f.close()

# 줄바꿈 문자 제거해서 파일 읽기
f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
	line = line.strip() # 줄 끝의 개행문자 제거
    # line.replace("\n", "") 로 아예 제거도 가능
    print(line)
f.close()

# f.read()는 파일의 내용 전체 문자열로 리턴
f = open("C:/doit/새파일.txt", 'r')
data = f.read()
print(data)
f.close()

# for문으로 파일에서 데이터 읽기 가능
f = open("C:/doit/새파일.txt", 'r')
for line in f:
	print(line)
f.close()

 

파일에 새로운 내용 추가 : a모드

* 파일을 w 모드로 열면 기존 내용 삭제하고 새로운 내용만 추가

# a모드 : append 모드
f = open("C:/doit/새파일.txt", 'a')
for i in range(11, 20):
	data = "%d번째 줄입니다.\n" % i
    f.write(data)
f.close()

# 실행후 확인
# type C:\doit\새파일.txt

 

with 문을 사용한 파일 처리

  • open() 된 파일은 반드시 close()
  • with는 파일을 자동으로 닫아줌
f = open("foo.txt.", 'w')
f.write("Life is too short, you need python")
f.close()

# type foo.txt

# with로 파일 읽기
with open("example.txt", "r") as file:
	content = file.read()
    print(content)
# with 블록 벗어나면 파일 자동으로 닫힘

# with로 파일쓰기
with open("foo.txt", "w") as f:
	f.write("Python is very easy.")
    
# type foo.txt

 

출처 : https://wikidocs.net/26

728x90

'LG U+ Why Not SW camp > python' 카테고리의 다른 글

[python] set (집합) 자료형  (0) 2024.08.01
[python] 문자열 함수 정리  (0) 2024.07.17
[python] 딕셔너리 자료형  (0) 2024.07.10
[python] 문자열 포매팅  (0) 2024.07.09