본문 바로가기
파이썬

파일 입출력 라이브러리2

by 코낄2 2023. 9. 14.

1.pickle

pickle 모듈은 파이썬 객체 구조를 직렬화하고 역직렬화하는 프로세스를 제공합니다다른 말로하면파이썬 객체(리스트딕셔너리클래스 인스턴스 ) 바이트 스트림으로 변환하고 바이트 스트림을 다시 파이썬 객체로 복원  있습니다. pickle 모듈은 Python 객체의 직렬화와 보존에 유용하며, 데이터를 효과적으로 저장하고 공유하는 데 사용됩니다. 그러나 보안과 버전 호환성 등의 주의사항을 염두에 두고 사용해야 합니다.

import pickle
data = ['apple', 'banana', 'orange']
# 직렬화, 바이너리로 저장을 하기때문에 'wb'사용
with open('list.pkl', 'wb') as f:
    pickle.dump(data, f)
# 역직렬화
with open('list.pkl','rb') as f:
    data = pickle.load(f)

2. shutil

shutil 모듈은 파이썬에서 고수준 파일 연산을 수행하기 위한 유틸리티 모듈입니다기본적인 os 모듈에서 제공하는 기능을 확장하여파일  디렉터리를 복사이동삭제하는  사용할  있는  다양한 함수를 제공합니다.

import shutil
# 파일 복사하기
shutil.copy('./data/텍스트파일1.txt','./data/텍스트파일1_복사본.txt')
 
# 파일 이동하기                                           # 데이터 폴더 밖으로 빼냄
shutil.move('./data/텍스트파일1_복사본.txt','./텍스트파일1_복사본.txt')
 
# 확장명 바꾸기
# move 가 파일의 위치를 바꿀수도 있지만, 이름이나 확장명을 바꿀때도 사용한다.
# 위치 그대로 이름만 바꿔주면 됨.
shutil.move('./텍스트파일1_복사본.txt','./텍스트파일1_복사본.py')

3. fnmatch

fnmatch는 파일 이름과 패턴을 비교하거나 매칭하는 데 사용되는 Python의 표준 라이브러리 모듈 중 하나입니다. 이 모듈은 와일드카드 문자(*, ?)를 사용하여 파일 이름을 패턴과 비교하고 일치하는지 확인하는 기능을 제공합니다. 주로 파일 및 디렉터리 관리 작업에서 사용됩니다. 결과는 True, False로 반환됩니다.

import fnmatch
for filename in os.listdir('./data'):      # 해당 조건에 맞는 파일명만 반환됨
    if fnmatch.fnmatch(filename, '?????[0-9].txt'):
        print(filename)

4. 데이터 압축

파이썬에서는 데이터 압축  아카이브 생성을 위한 여러 모듈 제공합니다. 이러한 모듈들을 사용하면 다양한 압축  아카이브 형식으로 데이터를 처리할  있습니다.

import zlib
import gzip
import zipfile
import tarfile
data = 'Hello Python!' * 10000
 
# data 를 인코딩(utf-8로)(컴퓨터가 이해할 수 있는 형식으로 변환)해서 압축해라
compress_data = zlib.compress(data.encode(encoding='utf-8'))
# compress_data를 먼저 압축해제한 후에 해당 데이터를 디코딩(사람이 알아볼 수 있게)한다.
org_data = zlib.decompress(compress_data).decode('utf-8')
print(len(org_data))
 
 
# org_data.txt를 생성하고 거기에 data를 write 한다.
with open('org_data.txt', 'w') as f:
    f.write(data)
# 압축을하면 일반적인 글자열로 저장되는것이 아니어서 바이너리 형식을 사용해준다.
# 안에 data를 인코딩한 내용을 넣어서 org_data.txt.gz 압축 파일을 생성한다.
with gzip.open('org_data.txt.gz', 'wb') as f:
    f.write(data.encode('utf-8'))
# 압축풀기
with gzip.open('org_data.txt.gz', 'rb') as f:
    org_data = f.read().decode('utf-8')
 
 
# 새파일.zip을 생성하여 안에 텍스트파일 1,2,3을 압축한다.
with zipfile.ZipFile('./data/새파일.zip','w') as myzip:
    myzip.write('./data/텍스트파일1.txt')
    myzip.write('./data/텍스트파일2.txt')
    myzip.write('./data/텍스트파일3.txt')
# 저장 경로를 지정해주고 싶다면 extractall안에 절대경로 사용
with zipfile.ZipFile('./data/새파일.zip') as myzip:
    myzip.extractall('/content/압축풀기')
 
# 윈도우와 리눅스는 각각 zipfile과 tarfile을 사용했었는데 현재는 모두 사용가능.
# 따라서 형태가 동일함.
with tarfile.open('./data/텍스트파일.tar','w') as mytar:
    mytar.add('./data/텍스트파일1.txt')
    mytar.add('./data/텍스트파일2.txt')
    mytar.add('./data/텍스트파일3.txt')
 
with tarfile.open('./data/텍스트파일.tar') as mytar:
    mytar.extractall('/content/압축풀기')

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

파이썬 예외처리  (0) 2023.09.17
파이썬 스페셜 메소드  (0) 2023.09.17
파일 입출력 라이브러리  (0) 2023.09.14
super()메소드와 다중상속  (0) 2023.09.13
상속  (0) 2023.09.13