1. OS
파이썬의 os 모듈은 운영 체제와 상호 작용하는 많은 함수와 유틸리티를 제공합니다. 이 모듈을 사용하면 파일, 디렉터리 또는 운영 체제에 관한 작업을 수행할 수 있습니다.
2. glob
glob 모듈은 파일과 폴더 이름을 찾을 때 사용하는 파이썬의 도구입니다. 이 모듈의 이름은 "전역적으로 찾기"라는 의미의 "global"에서 유래했습니다. glob는 특정 패턴에 일치하는 파일이나 폴더 이름을 쉽게 찾아줍니다. (아래 파일을 다운로드 받아 압축을 풀고 예제를 진행합니다.)
파일 다운 후 실행 =>
3. fileinput
fileinput 모듈은 파이썬에서 여러 입력 스트림을 동시에 순회하는 데 유용합니다. 이 모듈의 주요 용도는 명령줄에서 명시된 여러 파일을 동시에 읽는 스크립트를 작성하는 것입니다.
3-1. 각 파일의 첫번째 라인을 찾아 변경하기
3-2. 검색된 라인을 변경하기
3-3. 키워드를 찾아 원하는 텍스트로 치환하기
txt_files = glob.glob(os.path.join('data/', '*.txt'))
print(txt_files)
# 각 파일의 첫번째 라인을 찾아 변경하기
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 line == '첫번째 라인이야!\n':
print('검색된 라인을 변경했음', end='\n')
else:
print(line, end='')
# 키워드를 포함한 라인을 검색해서 해당 라인 변경하기
with fileinput.input(txt_files, inplace=True) as f:
for line in f:
if '2.' in line:
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='')
for filename in glob.glob('*.txt'):
print(filename)
# txt 파일 찾기 : 하위 경로
for filename in glob.glob('**/*.txt'):
print(filename)
# txt 파일 찾기 : 현재와 하위 경로 모두 포함
for filename in glob.glob('**/*.txt', recursive=True):
print(filename)
# 파일명 글자수로 찾기
for filename in glob.glob('????.*', recursive=True): # 글자수 4개
print(filename)
for filename in glob.glob('??.*', recursive=True): # 글자수 2개
print(filename)
# 문자열 패턴 포함 파일명 찾기
for filename in glob.glob('[a-z][a-z][a-z][a-z].*', recursive=True): # 알파벳 글자수 4개
print(filename)
for filename in glob.glob('**/텍스*.*'):
print(filename)
for filename in glob.glob('**/*파일*.*'):
print(filename)
4. pickle
pickle 모듈은 파이썬 객체 구조를 직렬화하고 역직렬화하는 프로세스를 제공합니다. 다른 말로하면, 파이썬 객체(리스트, 딕셔너리, 클래스 인스턴스 등)를 바이트 스트림으로 변환하고, 그 바이트 스트림을 다시 파이썬 객체로 복원할 수 있습니다.
5. shutil
shutil 모듈은 파이썬에서 고수준 파일 연산을 수행하기 위한 유틸리티 모듈입니다. 기본적인 os 모듈에서 제공하는 기능을 확장하여, 파일 및 디렉터리를 복사, 이동, 삭제하는 데 사용할 수 있는 더 다양한 함수를 제공합니다.
import shutil
# 파일 복사하기
shutil.copy('./Data/텍스트파일1.txt', './Data/텍스트파일1_복사본.txt')
# 파일 이동하기
shutil.move('./Data/텍스트파일1_복사본.txt', './텍스트파일1_복사본.txt')
# 확장명 바꾸기
shutil.move('./텍스트파일1_복사본.txt', './텍스트파일1_복사본.py')
# 확장명 바꾸기
shutil.move('./텍스트파일1_복사본.py', './텍스트파일1_복사본.txt')
6. fnmatch
fnmatch는 파일 이름과 패턴을 비교하거나 매칭하는 데 사용되는 Python의 표준 라이브러리 모듈 중 하나입니다. 이 모듈은 와일드카드 문자(*, ?)를 사용하여 파일 이름을 패턴과 비교하고 일치하는지 확인하는 기능을 제공합니다. 주로 파일 및 디렉터리 관리 작업에서 사용됩니다.
7. 데이터 압축
파이썬에서는 데이터 압축 및 아카이브 생성을 위한 여러 모듈을 제공합니다. 이러한 모듈들을 사용하면 다양한 압축 및 아카이브 형식으로 데이터를 처리할 수 있습니다.
1. zlib: 데이터를 압축하거나 해제할 때 사용하는 모듈
2. gzip: 내부적으로 zlib 알고리즘을 사용
import gzip
with open('org_data.txt', 'w') as f:
f.write(data)
# gzip으로 압축
with gzip.open('compressed.txt.gz', 'wb') as f:
f.write(data.encode('utf-8'))
# gzip 압축 해제
with gzip.open('compressed.txt.gz', 'rb') as f:
org_data = f.read().decode('utf-8')
print(len(org_data))
3. zipfile: 여러개 파일을 zip 확장자로 합쳐 압축할 때 사용
import zipfile
# 파일 합치고 압축하기
with zipfile.ZipFile('./Data/새파일.zip', 'w') as myzip:
myzip.write('./Data/텍스트파일1.txt')
myzip.write('./Data/텍스트파일2.txt')
myzip.write('./Data/텍스트파일3.txt')
# 압축 해제하기
with zipfile.ZipFile('./Data/텍스트파일.zip') as myzip:
myzip.extractall()
4. tarfile: 여러개 파일을 tar 확장자로 합쳐서 압축할 때 사용
import tarfile
# 파일 합치고 압축하기
with tarfile.open('./Data/텍스트파일.tar', 'w') as mytar:
mytar.add('./Data/텍스트파일1.txt')
mytar.add('./Data/텍스트파일2.txt')
mytar.add('./Data/텍스트파일3.txt')
mytar.add('./Data/텍스트파일4.txt')
mytar.add('./Data/텍스트파일5.txt')
# 압축 해제하기
with tarfile.open('./Data/텍스트파일.tar') as mytar:
mytar.extractall()
'Python > 개념' 카테고리의 다른 글
2024-03-22 과제 디렉토리 관리 프로그램 만들기 (0) | 2024.03.22 |
---|---|
2024-03-22 주피터 노트북 설치, 디렉토리 관리 프로그램 (0) | 2024.03.22 |
2024-03-21 변수 타입 어노테이션 (0) | 2024.03.21 |
2024-03-21 파일 입출력을 이용한 단어장 만들기 (0) | 2024.03.21 |
2024-03-20 파일 입출력 (0) | 2024.03.20 |