language/Python

[File] 파일 열기/읽기/쓰기/닫기 (open, read, write, close)

브라우니란 2023. 11. 17. 19:17

 

1. 파일 열기

  • open(): 파일을 열어서 읽고 쓸 때 활용는 메소드이다.
  • 파일이 위치한 저장 경로를 통해 파일을 연다.
  • mode: w(쓰기), r(읽기), a(기존 파일에 추가)
  • overwrite: 파일을 쓰기 모드로 열 때, 기존에 존재했던 파일인 경우 덮어 쓰기로 파일연다.
  • 기존 파일 내용을 유지하면서 새로운 내용을 추가하고 싶으면 a 모드로 파일을 연다.
  • close 하지 않으면 해당 프로그램 실행이 종료되기 전까지 파일은 계속 열려있다.
path = "C:/data/test.txt" # 파일을 있거나, 저장하고자 하는 위치 
file = open(path,"w")

for i in range(1, 11):
    txt = "{} 번 줄 text 파일에 쓰는 중 입니다.\n".format(i)
    file.write(txt)

 

 

 

2. 파일 닫기

  • close(): open() 메소드를 통해 연 파일을 닫을 때 사용하는 메소드이다.
  • with 구문을 사용하여 파일을 open 하지 않는 이상 close 해야만 파일을 정상적으로 닫힌다.
path = "C:/data/test.txt" # 파일을 있거나, 저장하고자 하는 위치 
file = open(path,"w")

for i in range(1, 11):
    txt = "{} 번 줄 text 파일에 쓰는 중 입니다.\n".format(i)
    file.write(txt)
    
file.close()

 

 

 

 

3. 파일 읽기

  • readline
  • readlines
  • read

 

1. readline: 파일 속에 저장된 내용을 한 줄씩 읽어들인다. 

path = "C:/data/test.txt"
file = open(path, "r")

while True:
    data = file.readline() # 한 줄씩 읽어서 data 변수에 할당

    if not data:
        break
    print(data, end = "")

# 파일을 다 읽은 후 파일 닫기
file.close()

 

 

2. readlines: 파일 속 모든 행을 한꺼번에 읽어들이는 함수

  • 파일 속 모든 데이터는 list 형태로 출력된다. 단, 줄단위 구분을 위해 \n이 포함되어 있다.
file = open("C:/data/test.txt","r")
data = file.readlines() # 모든 행을 한꺼번에 읽어 들인다
file.close()
print(data)

# 읽어들인 데이터를 하나씩 리스트에 담는다.
new = []
for i in data:
    new.append(i.rstrip())

print(new)

 

 

 

 

3. read: 모든 행을 하나의 문자열로 읽어들인다.

  • 파일에서 읽은 데이터는 하나의 문자열에 저장되어 있다.
# read: 모든 행을 하나의 문자열로 읽어들인다.
path = "C:/data/test.txt"

file = open(path,"r")
data = file.read() 
file.close()


print(data)
print(len(data))

# data 가공
data.replace('\n',' ')

 

 

 

 

 

4. with 문을 활용한 파일 열기

  • with 문: 자원(파일, 혹은 DB 세션)을 사용하고 종료할 때  사용한다.
  • 단락을 빠져나올 때 자동으로 자원이 반납된다. (close를 사용하지 않아도 된다.)
# 쓰기
with open("C:/data/test.txt","w") as file:
    for i in range(1, 11):
        txt = "{}번째 줄입니다..\n".format(i)
        
        file.write(txt)
        
# 추가
with open("C:/data/test.txt","a") as file:
    for i in range(11, 21):
        txt = "{}번째 줄입니다..\n".format(i)
        
        file.write(txt)
      
# 읽기
with open("C:/data/test.txt","r") as file:
    data = file.readlines()

print(data)