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 |