[PYTHON] Python 2.4로 파일의 압축을 해제하는 방법은 무엇입니까?
PYTHONPython 2.4로 파일의 압축을 해제하는 방법은 무엇입니까?
2.4로 zip 파일을 압축 해제하는 방법을 알아내는 데 어려움을 겪고 있습니다. extract ()는 2.4에 포함되어 있지 않습니다. 내 서버에서 2.4.4를 사용하는 것으로 제한됩니다.
누군가 간단한 코드 예제를 제공해 줄 수 있습니까?
해결법
-
==============================
1.namelist () 및 extract ()를 사용해야합니다. 디렉토리를 고려한 샘플
namelist () 및 extract ()를 사용해야합니다. 디렉토리를 고려한 샘플
import zipfile import os.path import os zfile = zipfile.ZipFile("test.zip") for name in zfile.namelist(): (dirname, filename) = os.path.split(name) print "Decompressing " + filename + " on " + dirname if not os.path.exists(dirname): os.makedirs(dirname) zfile.extract(name, dirname)
-
==============================
2.Vinko의 답변에 문제가 있습니다 (적어도 실행했을 때). 나는 :
Vinko의 답변에 문제가 있습니다 (적어도 실행했을 때). 나는 :
IOError: [Errno 13] Permission denied: '01org-webapps-countingbeads-422c4e1/'
해결 방법은 다음과 같습니다.
# unzip a file def unzip(path): zfile = zipfile.ZipFile(path) for name in zfile.namelist(): (dirname, filename) = os.path.split(name) if filename == '': # directory if not os.path.exists(dirname): os.mkdir(dirname) else: # file fd = open(name, 'w') fd.write(zfile.read(name)) fd.close() zfile.close()
-
==============================
3.목적지 디렉토리를 지정할 수 있도록 Ovilia의 대답 수정하기 :
목적지 디렉토리를 지정할 수 있도록 Ovilia의 대답 수정하기 :
def unzip(zipFilePath, destDir): zfile = zipfile.ZipFile(zipFilePath) for name in zfile.namelist(): (dirName, fileName) = os.path.split(name) if fileName == '': # directory newDir = destDir + '/' + dirName if not os.path.exists(newDir): os.mkdir(newDir) else: # file fd = open(destDir + '/' + name, 'wb') fd.write(zfile.read(name)) fd.close() zfile.close()
-
==============================
4.완전히 테스트되지는 않았지만 괜찮을 것입니다.
완전히 테스트되지는 않았지만 괜찮을 것입니다.
import os from zipfile import ZipFile, ZipInfo class ZipCompat(ZipFile): def __init__(self, *args, **kwargs): ZipFile.__init__(self, *args, **kwargs) def extract(self, member, path=None, pwd=None): if not isinstance(member, ZipInfo): member = self.getinfo(member) if path is None: path = os.getcwd() return self._extract_member(member, path) def extractall(self, path=None, members=None, pwd=None): if members is None: members = self.namelist() for zipinfo in members: self.extract(zipinfo, path) def _extract_member(self, member, targetpath): if (targetpath[-1:] in (os.path.sep, os.path.altsep) and len(os.path.splitdrive(targetpath)[1]) > 1): targetpath = targetpath[:-1] if member.filename[0] == '/': targetpath = os.path.join(targetpath, member.filename[1:]) else: targetpath = os.path.join(targetpath, member.filename) targetpath = os.path.normpath(targetpath) upperdirs = os.path.dirname(targetpath) if upperdirs and not os.path.exists(upperdirs): os.makedirs(upperdirs) if member.filename[-1] == '/': if not os.path.isdir(targetpath): os.mkdir(targetpath) return targetpath target = file(targetpath, "wb") try: target.write(self.read(member.filename)) finally: target.close() return targetpath
-
==============================
5.Python 2.7.3rc2에서 테스트 중이며 ZipFile.namelist ()는 하위 디렉토리를 만들기위한 하위 디렉토리 이름이있는 항목을 반환하지 않지만 다음과 같이 하위 디렉토리가있는 파일 이름 목록 만 반환합니다.
Python 2.7.3rc2에서 테스트 중이며 ZipFile.namelist ()는 하위 디렉토리를 만들기위한 하위 디렉토리 이름이있는 항목을 반환하지 않지만 다음과 같이 하위 디렉토리가있는 파일 이름 목록 만 반환합니다.
따라서 수표
True로 평가되지 않습니다.
그래서 dirName이 destDir 안에 있는지 확인하고 존재하지 않으면 dirName을 생성하도록 코드를 수정했습니다. 파일은 fileName 부분이 비어 있지 않은 경우에만 추출됩니다. 따라서 이것은 디렉토리 이름이 ZipFile.namelist ()에 나타날 수있는 조건을 처리해야합니다.
def unzip(zipFilePath, destDir): zfile = zipfile.ZipFile(zipFilePath) for name in zfile.namelist(): (dirName, fileName) = os.path.split(name) # Check if the directory exisits newDir = destDir + '/' + dirName if not os.path.exists(newDir): os.mkdir(newDir) if not fileName == '': # file fd = open(destDir + '/' + name, 'wb') fd.write(zfile.read(name)) fd.close() zfile.close()
from https://stackoverflow.com/questions/7806563/how-to-unzip-a-file-with-python-2-4 by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 주어진 wget 명령과 동일한 Python (0) | 2018.10.26 |
---|---|
[PYTHON] Pandas Groupby Agg 기능이 저하되지 않음 (0) | 2018.10.26 |
[PYTHON] Cython : (왜 / 언제) 인덱싱에 Py_ssize_t를 사용하는 것이 더 좋습니까? (0) | 2018.10.26 |
[PYTHON] 셸 명령 실행 및 출력 캡쳐 (0) | 2018.10.26 |
[PYTHON] 파이썬 : 목록의 고유성 (0) | 2018.10.26 |