본문 바로가기
PROGRAMING📚/Python📑

파이썬(Phython) 파일 읽고 쓰기

별찌루 2022. 4. 14.
728x90
반응형

파일 읽고 쓰기

 

파일의 필요성 : 전원이 꺼지더라도 파일이 저장된다. 

파일 경로 : 파일이 저장되어 있는 실제 위치를 명시한다.

 

파일 입력 관련 함수

  • read()
  • readline()
  • readlines()
  • write()
  • writelines()

파일에서 데이터 읽기

 

1. 파일 열기 

 

파일의 내용을 읽거나 파일에 뭔가를 쓰기 위해서 파일열기를 해주어야함

open -> 파일의 존재 여부를 확인

 

<선언>

r = 파일 읽기 만

w =파일에 내용 쓸때 만

a = 파일에 내용을 추가 할때 

 

2. 파일에서 데이터를 읽거나 쓰기 

 

read()

readline()

readlines()

 

3. 파일과 관련된 작업이 모두 종료되면 파일 닫기 

 


(실습 1)

import os.path #파일 경로 등 확인을 위한 함수를 가지고 있는 모듈

f2 = open("bs.txt","w")#소스와 같은 위치 생성

if os.path.isfile("b.txt"):
    print("해당 파일이 이미 존재합니다. 이름 지정 다시하세요.")
else:
    f2 = open("b.txt","w") #write모드로 파일 열기
    f2.write("Hello Python\n") #write모드로 open한 파일에 내용쓰기 , 자동줄바꿈이 되지 않는다.
    f2.write('Hi')
    f2.close()

 


 

  • 변수 명 = open("생성을 원하는 해당 경로", "원하는 작업"): 

"d:/python_test/b.txt" : "d:/python_test/ 폴더에 b.txt를 작성해준다.

"b.txt" : 현재 프로젝트가 저장되어있는 폴더에 작성된다. 

  • import os.path : 파일 경로 등 확인을 위한 함수를 가지고 있는 모듈
  • os.path.isfile("b.txt"): 해당 파일이 존재하는지 판별 한다. 

경로를 찾을때 , \는 \\두개 , /는 / 하나만 사용한다.

 

 


 

(실습 2)경로에 bs.txt라는 파일이 있으면 b.txt 파일을 열어서 open한 파일 내용 출력하기

 

import os.path 

if os.path.isfile("bs.txt"): 
    f1 = open("b.txt","r") #read 모드로 파일 열기
    data = f1.read() #read 모드로 open한 파일 내용 읽기
    print(data)
    f1.close()  # 파일 닫기
else:
    print("해당 파일이 없음")

 

 

* .read() #read() :파일 내용 전체를 다 읽어옴

 


(실습 3)readline() 사용하여 출력하기 

import os.path

f= open("b.txt","r")

result = f.readline() #readline() :파일 한줄씩 읽어온다.
print(result)

f.close()
//readline()은 한줄 씩 읽기 때문에 다음 문장들이 출력 되지 않는다.

 

import os.path

f= open("b.txt","r")

result = f.readline()
print(result)

while result != "":
    result = f.readline()
    print(result)

f.close()
readline()을 사용하면 한 줄씩 출력 되기 때문에 다음과 같이 while을 사용하여 출력해주어야한다.

 

 

 

(+추가).rstrip() 사용하기 

import os.path

f= open("b.txt","r")
result = f.readline().rstrip() #readline() :파일 한줄씩 읽어온다.
print(result)

while result != "":
    result = f.readline().rstrip() #.rstrip() :오른쪽에 필요없는 부분을 자름, '\n'없앰
    print(result)

f.close()

 

(실습 4) readlines() 사용하여 파일 출력하기 

* readlines() :파일 내용 전체를 읽어서 리스트 형식으로 반환함

 

import os.path

f= open("b.txt","r")

#리스트로 가져온다.
res =f.readlines() 
print(res)

f.close()

new_res =[]

for i in res:
    new_res.append(i.rstrip()) #오른쪽 필요없는것을 잘라줌

print(new_res)

//readlines()는 리스트 형식으로 반환한다//

 

 

* (l(왼쪽)/r(오른쪽)/s(양쪽))rstrip(): 필요없는 부분을 잘라준다.

 

#writ() 함수는 문자열 자료만 write한다. 숫자데이터는 write 불가능

#wrte는 int(정수형)으로 사용 불가능하다.


(실습 5)데이터를 입력받아 파일을 생성하고 데이터를 읽어오기

import os.path

f = open("friend.txt","w") #해당 위치에서 파일을 작성한다.
f.write("이름 \t 연락처 \n")

for i in range(5):
    name = input(("이름 :"))
    tel = input("연락처 :")
    age = int(input("나이 :")) 
    f.write(name +"\t"+ tel+"\t"+str(age)+"\n")

f.close()

#파일을 읽어오기
f1 =open("friend.txt","r")
print(f1.read())
f1.close()

//friend라는 이름의 파일에 입력받은 데이터가 들어가 있는 것을 볼수 있다.


(실습 6)score.txt파일을 읽어 총점과 평균계산하여 score.txt파일 끝에 추가하기

import os.path

f = open("score.txt","r")
n_res=[]
res = f.readlines() #리스트 형식으로 결과를 반환

for i in res:
    n_res.append(i.rstrip())

total =0

for i in range(1,len(n_res)):
    total +=int(n_res[i])

avg = total/len(n_res)

n_res.append(total)
n_res.append(avg)

print(n_res) //리스트 안에 총점과 평균이 계산되어 넣어진것을 확인 할 수있다.

//계산된 값을 파일에 작성해주어야 함.

f =open("score.txt","a") #append :파일의 현재 내용 끝에 내용 추가
f.write("총점:"+str(total)+"점\n")
f.write("평균:"+str(avg) +"점")
f.close()

 


(실습 7) 저장한 값을 역순으로 작성하기

import os.path

f = open("things.txt","r")
result=[]

data = f.readlines()

for i in range(len(data)-1, -1, -1) : #range(시작, 끝, 증감치)
    a = data[i].rstrip()
    result.append(a)

print("리스트에 저장된값 :",data)
print("역순으로 입력 :",result)

f.close()
f = open("rthings.txt","w")
f.write(str(result))
f.close()

//rthing.txt 파일에 결과가 따로 저장됨

 

728x90
반응형

댓글