본문 바로가기
파이썬

파일 입출력 라이브러리

by 코낄2 2023. 9. 14.

1. 파일 읽기와 쓰기

import fileinput
import os
import glob

파이썬의

os 모듈 운영 체제와 상호 작용하는 많은 함수와 유틸리티를 제공합니다.  모듈을 사용하면 파일, 디렉터리 또는 운영 체제에 관한 작업을 수행할  있습니다.

glob 모듈 파일과 폴더 이름을 찾을  사용하는 파이썬의 도구입니다. glob 특정 패턴에 일치하는 파일이나 폴더 이름을 쉽게 찾아줍니다.

fileinput 모듈 파이썬에서 여러 입력 스트림을 동시에 순회하는  유용합니다.  모듈의 주요 용도는 명령줄에서 명시된 여러 파일을 동시에 읽는 스크립트를 작성하는 것입니다.

# 현재 경로 확인
os.getcwd()
 
# 디렉토리 안에 파일(디렉토리)을 확인하고 리스트로 반환
os.listdir(os.getcwd())
>> ['내사진.jpg', '텍스트파일2.txt', '텍스트파일1.txt', '텍스트파일3.txt']
 
# 지정한 경로에 있는 지정한 파일들을 확인하고 '경로와 파일명' 리스트로 반환
glob.glob(os.path.join('data/', '*.txt'))
>> ['data/텍스트파일2.txt', 'data/텍스트파일1.txt', 'data/텍스트파일3.txt']
 
# 'data/' 디렉토리 아래에 있는 모든 텍스트 파일을 읽고, 각 파일에 대해 한 줄씩 처리
with fileinput.input(glob.glob(os.path.join('data/', '*.txt'))) as f:
    for line in f:
        print(line)
 
# inplce = True 를 설정하면 수정 모드로 사용 가능.
# 기본값 False는 읽기 모드
# 각 파일의 첫번째 라인을 찾아 변경하기
with fileinput.input(txt_files, inplace = True) as f:
    for line in f:
        if f.isfirstline():
            print('첫번째 라인이야!', end='\n')
        else:
            print(line,end='')
 
# 키워드를 찾아 원하는 텍스트로 치환하기
with fileinput.input(txt_files, inplace = True) as f:
    for line in f:
        if '3.'in line:
            print(line.replace('3.', '세번째.'), end='')
        else:
            print(line,end='')
 
# 하위 경로의 txt파일 찾기
# 만약 여러 파일 안에 txt 파일이 있다면 모든 하위경로에 있는 txt 파일을 전부 가져온다.
for filename in glob.glob('**/*.txt'):
    print(filename)
data/텍스트파일2.txt
data/텍스트파일1.txt
data/텍스트파일3.txt
 
# recursive=True 현재 경로 포함해서 파일 찾기.
# 파일명 글자수로 찾기
# * 뜻은 확장명 상관없이 3글자 파일 모두 찾는다는 뜻
for filename in glob.glob('???.*', recursive=True):
    print(filename)
 
# 문자열 패턴 포함 파일명 찾기
for filename in glob.glob('[a-z][a-z][a-z][a-z][a-z][a-z].*',recursive=True):
    print(filename)
 
for filename in glob.glob('[가-힣][가-힣].*',recursive=True):
    print(filename)
 

위의 다양한 모듈과 함수들을 이용하여 파일과 디렉토리의 관리와 수정이 가능해집니다.

'파이썬' 카테고리의 다른 글

파이썬 스페셜 메소드  (0) 2023.09.17
파일 입출력 라이브러리2  (0) 2023.09.14
super()메소드와 다중상속  (0) 2023.09.13
상속  (0) 2023.09.13
객체지향과 클래스  (0) 2023.09.12