[Python] .endswith(), os.path.join(), with open문, .read()

공부한 내용 정리하는 공간입니다.

틀린 내용이 있을 수 있습니다.

모든 지적, 첨언 환영합니다.

오늘의 코드

1. 텍스트 파일 출력

2. 텍스트 파일 내용 출력

import os

dir_path = "001"
all_files = os.listdir(dir_path)
txt_files = []

for file in all_files:
    if file.endswith('.txt'):
        print(file)
        txt_files.append(file)

print("==========")

for filename in txt_files:
    file_path = os.path.join(dir_path, filename)
    with open(file_path, 'r', encoding='utf-8') as f:
        print(f.read())

 


.endswith()

특정 문자로 끝나는지 확인하는 메서드

문자열.endswith(문자) 형태로 사용

문자열이 지정한 문자로 끝날 때 true 반환, 지정한 문자로 끝나지 않 때 false 반환

특정 파일 확장자를 확인할 수 있음

 


os.path.join()

디렉터리 경로와 파일 이름을 결합하여 올바른 파일 경로를 만들어주는 함수

운영체제에 맞게 경로 구분자를 자동으로 처리함

os.path.join(디렉터리 경로, 파일 이름) 형태로 사용

디렉터리 경로와 파일 이름을 결합하여 반환

단순히 문자열을 결합하는 역할만 하기 때문에 유효하지 않은 경로일 수 있음

유효하지 않은 경로는 이후 작업에서 오류 발생 원인이 됨

 


with open(A, B) as C:

파일을 열고 처리하는 구문

파일 작업 후 자동으로 파일을 닫아줌

with open(파일경로, '모드') as 변수 형태로 사용

모드에는 r:읽기, w:쓰기, a:추가, rb:바이너리 모드로 읽기 등이 있음

 


.read()

파일의 전체 내용을 한 번에 읽어서 문자열로 반환하는 메서드

파일의 크기가 작을 경우 편리함

속도가 빠름

찾는 정보의 유무 확인에 유용

 


.readline()

파일에서 한 줄씩 읽어서 문자열로 반환하는 메서드

한 번 호출할 때마다 파일의 한 줄만 읽음

반복문을 사용해서 한 줄씩 끝까지 읽을 수 있음

 


.readlines()

파일의 모든 줄을 읽어서 리스트로 반환하는 메서드

한 줄이 리스트의 항목이 됨

 


오늘의 코드

1. 텍스트 파일 출력

2. 텍스트 파일 내용 출력

import os

dir_path = "001"
all_files = os.listdir(dir_path)
txt_files = []

for file in all_files:
    if file.endswith('.txt'):
        print(file)
        txt_files.append(file)

print("==========")

for filename in txt_files:
    file_path = os.path.join(dir_path, filename)
    with open(file_path, 'r', encoding='utf-8') as f:
        print(f.read())

오늘의 코드 결과

오늘의 코드 설명

all_files = os.listdir(dir_path)

디렉터리 dir_path 내의 파일, 폴더를 리스트 형태로 all_files에 저장

    >all_files= ["01.txt", "02.txt", "03.py", "04.png", "05.txt"]

1. 텍스트 파일 출력

for file in all_files:

file은 리스트 all_files에서 반복

if file.endswith('.txt'):
	print(file)
	txt_files.append(file)

file이 .txt로 끝날 경우

확장자가 txt인지 확인

file을 출력하고 리스트 txt_files에 file을 요소로 추가

    >txt_file=[ "01.txt", "02.txt", "05.txt"]

txt_files에는 txt확장자인 파일이 저장

2. 텍스트 파일 내용 출력

for filename in txt_files:

filename은 리스트 txt_files에서 반복

file_path = os.path.join(dir_path, filename)

경로(dir_path)와 파일 이름(filename)을 결합하여 file_path에 저장

    >file_path= 001\01.txt, 001\ 02.txt, 001\ 05.txt

with open(file_path, 'r', encoding='utf-8') as f:

file_path를 읽기 모드로 열어서 파일 내용을 f에 저장

print(f.read())

f의 전체 내용을 읽어서 출력