Python에서 파일 형식을 압축 해제하는 기본 방법
다양한 압축 패키지 형식을 처리하는 Python 라이브러리: patool. 기본적인 압축 해제, 패키징 및 기타 작업만 사용하고 다양한 압축 형식에 해당하는 Python 라이브러리에 대해 자세히 알아보고 싶지 않다면 patool이 좋은 선택이 될 것입니다.
관련 권장 사항: "python video"
patool 라이브러리 지원 형식은 다음과 같습니다:
7z(.7z, .cb7), ACE(.ace, .cba), ADF(.adf), ALZIP( .alz), APE(.ape), AR(.a), ARC(.arc), ARJ(.arj), BZIP2(.bz2), CAB(.cab), COMPRESS(.Z), CPIO(.cpio ), DEB(.deb), DMS(.dms), FLAC(.flac), GZIP(.gz), ISO(.iso), LRZIP(.lrz), LZH(.lha, .lzh), LZIP( . lz), LZMA(.lzma), LZOP(.lzo), RPM(.rpm), RAR(.rar, .cbr), RZIP(.rz), SHN(.shn), TAR(.tar, .cbt ) , 예를 들어 제가 주로 patool을 사용하여 파일을 압축 해제하면 내 컴퓨터에서는 주로 7z 및 Rtools를 호출합니다. 컴퓨터에 해당 압축 파일을 처리할 수 있는 소프트웨어가 없으면 다음과 같은 오류가 보고됩니다.
import patoolib # 解压缩 patoolib.extract_archive("archive.zip", outdir="/tmp") # 测试压缩包是否完整 patoolib.test_archive("dist.tar.gz", verbosity=1) # 列出压缩包内的文件 patoolib.list_archive("package.deb") # 创建压缩包 patoolib.create_archive("/path/to/myfiles.zip", ("file1.txt", "dir/")) # 比较压缩包内文件的差异 patoolib.diff_archives("release1.0.tar.gz", "release2.0.zip") # 搜索patoolib.search_archive("def urlopen", "python3.3.tar.gz") # 修改压缩包的压缩格式 patoolib.repack_archive("linux-2.6.33.tar.gz", "linux-2.6.33.tar.bz2")
게다가 , patool은 비밀번호로 보호된 파일을 처리할 수 없습니다. patool과 유사한 라이브러리에는 pyunpack 및 easy-extract가 포함됩니다. pyunpack 라이브러리는 zipfile 및 patool을 사용하고 두 라이브러리에서 지원하는 모든 압축 형식을 지원하며 미리 설치해야 합니다. easy-extract 라이브러리는 압축 해제 소프트웨어 unrar에 의존합니다. , 7z 및 par2를 미리 설치해야 합니다. 설치도 여러 압축 해제 형식을 지원합니다.
일반적인 압축 형식 처리
해당 압축 소프트웨어가 컴퓨터에 설치되어 있지 않고 압축 및 압축 풀기 작업에 Python을 사용하려는 경우 다음을 사용하여 몇 가지 일반적인
zip 형식을 도입할 수 있습니다
zip 형식을 처리할 수 있는 Python 라이브러리에는 Python 표준 라이브러리 zipfile, 타사 라이브러리 python-archive 등이 포함됩니다. 다음은 주로 zipfile 라이브러리의 기본 사용법을 소개합니다.
먼저 ZipFile 객체 생성:patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z)
# 导入ZipFile类 from zipfile import ZipFile # ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None) # 默认模式是读取,该模式提供read(), readline(), readlines(), __iter__(), __next__()等方法
with ZipFile('test.zip') as myzip: myzip.extract(member='1.txt',path='tmp') myzip.extractall(path='tmp',members=['1.txt','2.txt'],pwd='password')
전체 폴더 압축
# 添加文件的mode有'w', 'a', 'x' # 'w'表示覆盖或写入一个新文件;'a'表示在已有文件后追加;'x'表示新建文件并写入。 # 在三种mode下,如果未写入认识数据,则会生成空的ZIP文件。 with ZipFile('test.zip',mode='w') as myzip: for file in ['1.txt', '2.txt']: # 需压缩的文件列表 myzip.write(file,compress_type=zipfile.ZIP_DEFLATED)
rar format에는 해당 python 표준 라이브러리가 없으며 타사 라이브러리 rarfile, python-unrar, pyUnRAR2 등에 의존해야 합니다. 위 라이브러리는 RARLAB의 UnRAR 라이브러리 지원에 의존한다는 공통점이 있습니다. 다음은 주로 다음을 소개합니다. rarfile 라이브러리:
설치 및 구성
설치 명령:# 方法一 def addToZip(zf, path, zippath): if os.path.isfile(path): zf.write(path, zippath, zipfile.ZIP_DEFLATED) # 以zlib压缩方法写入文件 elif os.path.isdir(path): if zippath: zf.write(path, zippath) for nm in os.listdir(path): addToZip(zf, os.path.join(path, nm), os.path.join(zippath, nm)) with zipfile.ZipFile('tmp4.zip', 'w') as zip_file: addToZip(zip_file,'tmp','tmp') #方法二 class ZipFolder: def toZip(self, file, zipfilename): # 首先创建zipfile对象 with zipfile.ZipFile(zipfilename, 'w') as zip_file: if os.path.isfile(file): # 判断写入的是文件还是文件夹,是文件的话直接写入 zip_file.write(file) else: # 否则调用写入文件夹的函数assFolderToZip() self.addFolderToZip(zip_file, file) def addFolderToZip(self, zip_file, folder): for file in os.listdir(folder): # 依次遍历文件夹内的文件 full_path = os.path.join(folder, file) if os.path.isfile(full_path): # 判断是文件还是文件夹,是文件的话直接写入 print('File added: ', str(full_path)) zip_file.write(full_path) elif os.path.isdir(full_path): # 如果是文件夹的话再次调用addFolderToZip函数,写入文件夹 print('Entering folder: ', str(full_path)) self.addFolderToZip(zip_file, full_path) directory = 'tmp' # 需压缩的文件目录 zipfilename = 'tmp1.zip' #压缩后的文件名 ZipFolder().toZip(directory, zipfilename)
그런 다음 환경 변수를 추가합니다. 먼저 시스템 변수의 경로 변수에 C:Program Files (x86)UnrarDLLx64(내 시스템은 64비트)를 추가합니다(컴퓨터 마우스 오른쪽 버튼 클릭 > 속성 > 고급 시스템 설정 > 고급 > 환경 변수). , 그러나 PyCharm을 다시 시작한 후에도 오류가 계속 보고됩니다. pip install rarfile
기본 사용법
rarfile 라이브러리의 사용법은 zipfile과 매우 유사하며 extract(), extractall(), namelist(), infolist(), getinfo(), open(), read(), printdir() 및 기타 기능과의 주요 차이점은 RarFile 개체는 읽기 모드만 지원하고 파일을 쓸 수 없다는 것입니다.
LookupError: Couldn't find path to unrar library.
rarfile 라이브러리를 사용하여 rar 압축 패키지의 압축을 푸는 것은 zipfile 라이브러리를 사용하여 zip 형식의 압축 패키지를 푸는 것과 같습니다. zipfile 라이브러리의 사용법을 참조하세요. 또한 python-unrar 라이브러리의 설치, 설정 및 사용은 rarfile 라이브러리와 매우 유사하지만 python-unrar 라이브러리는 with 문을 사용하려는 경우 찾을 수 있습니다. python-unrar 라이브러리 설치 디렉터리에 있는 rarfile.py를 파일에 추가합니다.
# mode的值只能为'r' class rarfile.RarFile(rarfile, mode='r', charset=None, info_callback=None, crc_check=True, errors='stop')
tar 형식은 Unix 시스템에서 서로 다른 압축 방법을 사용하여 서로 다른 형식을 만들 수 있습니다. 압축 파일 형식: .tar.gz (.tgz ), .tar.bz2 (.tbztb2), .tar.Z (.taz), .tar.lzma (.tlz), .tar.xz (.txz) ), 등. tar 형식은 Python 표준 라이브러리 tarfile에 해당합니다. 지원되는 형식은 tar, tar.gz, tar.bz2, tar.xz, .tar.lzma 등입니다.
tarfile 라이브러리의 기본 사용법:tarfile 객체 생성
tarfile 라이브러리는 tarfile.TarFile() 대신 tarfile.open()을 사용하여 객체를 생성합니다.tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
其中,mode可取的值比较多,主要包括'r', 'w', 'a', 'x'四种模式(在zipfile库的使用中简单介绍过),以及这四种模式与'gz', 'bz2', 'xz'三种压缩方法的组合模式,具体取值如下表所示:
模式 含义
'r'or'r:*' 自动解压并打开文件(推荐模式)
'r:' 只打开文件不解压
'r:gz' 采用gzip格式解压并打开文件
'r:bz2' 采用bz2格式解压并打开文件
'r:xz' 采用lzma格式解压并打开文件
'x'or'x:' 仅创建打包文件,不压缩
'x:gz' 采用gzip方式压缩并打包文件
'x:bz2' 采用bzip2方式压缩并打包文件
'x:xz' 采用lzma方式压缩并打包文件
'a'or'a:' 打开文件,并以不压缩的方式追加内容。如果文件不存在,则新建
'w'or'w:' 以不压缩的方式写入
'w:gz' 以gzip的方式压缩并写入
'w:bz2' 以bzip2的方式压缩并写入
'w:xz' 以lzma的方式压缩并写入
但是,不支持'a'与三种压缩方法的组合模式('a:gz', 'a:bz2'、'a:xz')
基本使用方法
解压缩至指定的目录
with tarfile.open("test.tar.gz") as tar: tar.extractall(path='.')
解压符合某些条件的文件
# 解压后缀名为py的文件 def py_files(members): for tarinfo in members: if os.path.splitext(tarinfo.name)[1] == ".py": yield tarinfo with tarfile.open("sample.tar.gz") as tar: tar.extractall(members=py_files(tar))
创建不压缩的打包文件
with tarfile.open("sample.tar", "w") as tar: for name in ["foo", "bar", "quux"]: tar.add(name)
创建压缩的打包文件
with tarfile.open("sample.tar", "w:gz") as tar: for name in ["foo", "bar", "quux"]: tar.add(name)
压缩并打包整个文件夹,较之zipfile库简单得多,可使用add()函数进行添加
tar = tarfile.open('test.tar','w:gz') for root ,dir,files in os.walk(os.getcwd()): for file in files: fullpath = os.path.join(root,file) tar.add(fullpath)
其他压缩格式
Python原生的数据压缩打包的标准库还包括:bz2、gzip、zlib、lzma以及建立在zipfile和tarfile库基础上的shutil库,以后有机会再详细介绍。
위 내용은 Python에서 파일 형식을 압축 해제하는 기본 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

Sublime 텍스트로 Python 코드를 실행하려면 먼저 Python 플러그인을 설치 한 다음 .py 파일을 작성하고 코드를 작성한 다음 CTRL B를 눌러 코드를 실행하면 콘솔에 출력이 표시됩니다.

Visual Studio Code (VSCODE)에서 코드를 작성하는 것은 간단하고 사용하기 쉽습니다. vscode를 설치하고, 프로젝트를 만들고, 언어를 선택하고, 파일을 만들고, 코드를 작성하고, 저장하고 실행합니다. VSCODE의 장점에는 크로스 플랫폼, 무료 및 오픈 소스, 강력한 기능, 풍부한 확장 및 경량 및 빠른가 포함됩니다.

VS 코드는 파이썬을 작성하는 데 사용될 수 있으며 파이썬 애플리케이션을 개발하기에 이상적인 도구가되는 많은 기능을 제공합니다. 사용자는 다음을 수행 할 수 있습니다. Python 확장 기능을 설치하여 코드 완료, 구문 강조 및 디버깅과 같은 기능을 얻습니다. 디버거를 사용하여 코드를 단계별로 추적하고 오류를 찾아 수정하십시오. 버전 제어를 위해 git을 통합합니다. 코드 서식 도구를 사용하여 코드 일관성을 유지하십시오. 라인 도구를 사용하여 잠재적 인 문제를 미리 발견하십시오.

메모장에서 Python 코드를 실행하려면 Python 실행 파일 및 NPPEXEC 플러그인을 설치해야합니다. Python을 설치하고 경로를 추가 한 후 nppexec 플러그인의 명령 "Python"및 매개 변수 "{current_directory} {file_name}"을 구성하여 Notepad의 단축키 "F6"을 통해 Python 코드를 실행하십시오.
