AR삽질러

Python File 본문

Python

Python File

아랑팡팡 2023. 10. 15. 00:03
728x90

 

Python File

 

 File을 배우기 이전에는 작업하던 데이터가 모두 사라졌다. 따라서 프로그램을 실행하는 도중 어떤 데이터를 저장하고자 한다면 하드 디스크에 파일 형태로 저장해야한다. Python은 이러한 파일을 생성하고 읽고 쓰는 등의 기능을 제공한다. 

 


 

0. 실습용 텍스트 파일 만들기

 - 메모장에 친구들의 이름과 : 연락처를 입력한 후 phones.txt로 저장한다.

 

1. 파일에서 데이터 읽기

open()

 - open함수는 파일이름을 받아 파일 객체를 생성한 후 반환한다. 파일이 열리면 데이터를 읽거나 쓸 수 있지만 파일과 관련된 작업이 모두 종료되면 close()함수를 통해 파일을 닫아야한다.

 

 

파일을연다 : open()  ->  파일에서 데이터를 읽거나 쓴다.  -> 파일을 닫는다. : close()

 

파일모드 모드이름 설명
"r" 읽기모드(read mode) 파일의 처음부터 읽는다.
"w" 쓰기모드(write mode) 파일의 처음부터 쓴다.
파일이 없으면 생성된다.
만약 파일이 존재하면 기존의 내용은 지워진다.
"a" 추가모드(append mode) 파일의 끝에 쓴다.
파일이 없으면 생성된다.
"r+" 읽기와 쓰기 모드 파일에 읽고 쓸 수 있는모드로 모드를 변경하려면 seek()가 호출되어야 한다.

 

C: 드라이브의 \ 디렉터리의 "python.txt" 파일을 읽기 모드로 열는 방법

 * 에러가 발생한다면 encoding="utf-8"을 붙여준다.

infile = open("C:\\python.txt", "r", encoding="utf-8");

 

 

 

2. 파일 데이터 전체 읽기

 - 파일에서 데이터를 읽는 함수는 파일 객체의 read()메소드로 파일 객체에서 전체 텍스트를 읽어온다.

만약 지정된 개수의 문자만 읽으려면 read(10)과 같이 문자의 개수를 전달하면 된다.

infile = open("C:\FileTest", "r", encoding="utf-8")
lines = infile.read()
print(lines)

 

3. 파일 데이터 한줄씩 읽기

 - readlines()함수는 한번에 파일의 모든 줄을 읽어온다. 만약 한번에 하나의 줄만 읽기를 원하면 다른 메소드를 사용해야한다.

readline()는 한번에 한줄만 읽어 문자열로 반환하지만 일반적으로 파일에 몇 줄이 들어가는지 알수없다. 때문에 파일의 크기가 크고 한줄씩 읽어서 처리하려면 아래와 같은 방법을 사용한다.

infile = open("C:/myPythonProject/AYU/FileTest/phones.txt", "r", encoding="utf-8")
line = infile.readline().rstrip() 
while line != "":
    print(line)
    line = infile.readline().rstrip() 
infile.close()

각 반복에서 lien변수는 파일에서 다음에 읽을 문자열로 대입되고 반복 루프의 몸체에서 이 텍스트를 처리히하여 출력한다.

 

4. 파일 데이터 쓰기

 - open()함수로 파일 객체를 생성한 후에 write()함수를 이용해 데이터를 저장한다. 파일에 데이터를 쓰려면 파일을 open()으로 열때 "w" 모드를 사용한다. 

outfile = open("C:/myPythonProject/AYU/FileTest/phones.txt", "w", encoding="utf-8")

outfile.write("리자드 010-0029-4321\n")  # 각 데이터 끝에 개행 문자 추가
outfile.write("리자몽 010-9999-2234\n")

outfile.close()

5. 파일 데이터 추가하기

 - 기존의 파일에 새로운 데이터를 추가하려면 파일 모드로 "a"를 사용한다. "a"는 "append"의 약자이다.

outfile = open("C:/myPythonProject/AYU/FileTest/phones.txt", "a", encoding="utf-8")

outfile.write("리자드 010-0029-4321\n")  # 각 데이터 끝에 개행 문자(\n) 추가
outfile.write("리자몽 010-9999-2234\n")
outfile.write("파이리 010-0923-1989\n")
outfile.write("이상해씨 010-3239-3485\n")
outfile.write("피카츄 010-1234-1234\n")

outfile.close()

 

6. 파일 단어 읽기

 - 텍스프 파일에서 단어를 읽으려면 split()메소드를 이용하여 공백문자를 분리하여 추출한다.

infile = open("C:/myPythonProject/AYU/FileTest/phones.txt", "r", encoding="utf-8")

for line in infile:
    line = line.rstrip()
    word_list = line.split()
    for word in word_list:
        print(word);

infile.close()

 

 

 

 

 

728x90
반응형
LIST