본문 바로가기
파이썬

파이썬 공부하기 기초부터 시작 (파일 읽고 쓰기)

by ㈜㎹Ω∞ 2022. 7. 9.
728x90

파이썬으로 txt 파일을 읽고 쓸 수가 있습니다. r, w, a 모드가 있으며, r모드는 읽기 모드(read), w모드는 쓰기 모드(write), a모드는 추가 모드(append)입니다. w 쓰기 모드와 a추가 모드가 비슷하여 헷갈릴 수가 있는데, w 쓰기 모드는 파일을 리셋한 후 다시 작성하는 것이고, a추가 모드는 파일 마지막 부분에 추가한다는 차이가 있습니다.

 

  • r = 읽기 모드 (read)
  • w = 쓰기 모드 (write)
  • a = 추가 모드 (append)

 

os모듈로 작업 폴더를 바꿀 수가 있습니다. import os 작성으로 사용할 수 있으며, os모듈은 파이썬 설치할 때 같이 깔리는 모듈입니다. 또한 경로를 지정할 때는 os.chdir(r"경로")라고 작성합니다. 경로에는 C:\python3.9처럼 \표시가 들어가는데, \표시마다 \를 한 번 더 표시해줘야 합니다. 그런데 r"경로"를 작성하면\을 한 번 더 작성할 필요 없이 C:\python3.9만으로 사용 가능합니다. (r작성 안 할 경우 C:\\python3.9 이런 식으로 작성) 바꾼 경로를 확인할 때는 os.getcwd() 함수로 확인 가능합니다.

 

import os	### os모듈을 불러옴

os. chdir(r"C:\test")	### 경로바꿈
print(os.getcwd())	### 경로확인
C:\test

### r사용 안할때
import os

os. chdir("C:\\test")	### r대신\한번더 작성
print(os.getcwd())
C:\test

 

w 쓰기 모드

파일을 리셋하고 새롭게 씁니다.

os모듈을 사용해서 경로를 바꾸고, test폴더에 test파일을 만들어서 쓰기모드 테스트라는 문구가 나오는 코드를 작성해 봅시다. 

 

import os

os. chdir("C:\\test")	

f=open("test.txt","w")	### f객체생성,txt파일생성,
f.write("쓰기모드 테스트")	### f객체에 쓸 문구 작성
f.close()	### 닫아줌
쓰기모드 테스트	### 폴더에가면 test파일이 있고, 안에 문구작성됨

 

a 추가 모드

파일에 있는 자료는 남겨두고 마지막에 추가합니다. 위에 만든 파일에 테스트성공 이라는 문구를 추가해봅시다.

 

### 위에 만든 파일에 테스트성공 이라는 문구 추가하기
import os

os. chdir("C:\\test")

f=open("test.txt","a")	### 추가모드사용
f.write("\n테스트성공")	### \n은 줄바꾸기
f.close()
쓰기모드 테스트
테스트성공

 

with키워드를 사용하면 close() 함수를 사용 안 해도 됩니다. with open("파일이름","모드") as 객체이름: 이렇게 작성해서 사용하므로 코드가 한결 간편해집니다.(close()함수사용안함)

 

import os

os.chdir(r"c:\test")

with open("test2.txt","w") as f:	### as사용으로 f객체만듬
    f.write("with as 테스트중")	### 파일에 적을문구
with as 테스트중

 

영어단어 입력하는 파일 만들기

  • import, while, try, except, if~else, with~as 사용함

 

import os

os.chdir(r'C:\test')

while True:
    try:
        word = input("영어단어 : ")
        mean = input("그 뜻은 무엇인가요? : ")
        with open("english.txt", "a") as e:
            e.write(word)
            e.write(":")
            e.write(mean)
            e.write("\n")
    except:
        pass
              
    your_input = input("멈추고싶으면 stop입력하세요.")
    if your_input == "stop":
        break
    else:
        continue
    
print("단어를 다 입력했습니다.")

### 해석
import os	### os모듈 불러옴

os.chdir(r'C:\test')	### os모듈의chdir사용함

while True:	### 반복문사용
    try:	### 해야할일
        word = input("영어단어 : ")	### 입력값기다림
        mean = input("그 뜻은 무엇인가요? : ")	### 입력값기다림
        with open("english.txt", "a") as e:	### english파일의 추가모드 e객체만듬
            e.write(word)	### e객체의 쓰기 word값입력
            e.write(":")	### e객체의 쓰기 :입력
            e.write(mean)	### e객체의 쓰기 mean값입력
            e.write("\n")	### e객체의 쓰기 한줄띄움
    except:	### 오류가났을때
        pass	### 아무일안함
              
    your_input = input("멈추고싶으면 stop입력하세요.")	### 입력값기다림
    if your_input == "stop":	### your_input값이 stop이라면 break
        break	### while문 끝남 끝으로 이동
    else:	### stop이 아니라면
        continue	### 처음부터
    
print("단어를 다 입력했습니다.")	### 끝

 

 

r 읽기 모드

readline() 함수는 한 줄씩 읽고, readlines() 함수는 여러 줄을 읽습니다. s를 붙여서 복수다 아니다 라는 차이점입니다. readline()는 한 줄씩 읽다가 줄이 없으면 break를 합니다.

 

import os

os.chdir(r'C:\test')

with open("english.txt","r") as e:
    while True:
        line=e.readline()
        if not line:
            break
        print(line)
        
### 해석
import os	### os모듈 불러옴

os.chdir(r'C:\test')	### os모듈의 chdir함수사용

with open("english.txt","r") as e:	### english파일 읽기, 객체이름e
    while True:	### 반복문사용
        line=e.readline()	### line변수는 e객체의 한줄씩 읽기
        if not line:	### line변수가 없다면
            break	### 나가기
        print(line)	### line출력

 

readlines()는 한 번에 다 읽기 때문에 while문을 쓸 필요가 없고, 리스트로 보여줍니다.

 

import os

os.chdir(r'C:\test')

with open("english.txt","r") as e:
    lines=e.readlines()
    print(lines)
    
### 해석
import os	### os모듈 불러옴

os.chdir(r'C:\test')	### os모듈의 chdir함수사용

with open("english.txt","r") as e:	### english파일 읽기, 객체이름e
    lines=e.readlines()	### lines변수는 한번에 읽기,리스트로읽음
    print(lines)	### lines출력
728x90

댓글