2017-01-31 1 views
-1

저는 파이썬에 초보자이며 압축 된 파일에서 각각 다른 확장자의 파일 하나를 추출하려고합니다. 나는 그들의 파일 이름을 알지 못한다.압축 된 파일에서 선택한 확장명의 모든 파일 압축 풀기

의 다음 형식이 존재한다고 가정 해 봅시다 :

---ZippedDirectory.zip

|_ 
    RandomnameFile1.KnownFormat1 
|_ 
    RandomnameFile2.KnownFormat2 
|_ 
    RandomnameFile3.KnownFormat3 
|... 

내가 위의 파일을 추출해야, 난 단지 형식을 알고있다. 이 압축 파일에는 다른 파일이있을 수 있습니다. 나는 이것을 달성하는 방법에 관해서 혼란 스럽다. 어떤 도움도 굉장 할 것이다!

감사합니다.

+3

는 [여기서 몇몇 예 (더불어 [ZipFile를 (https://docs.python.org/2/library/zipfile.html) 라이브러리를 참조 https://pymotw.com/2/zipfile /) – nbryans

+1

zipfile을 사용하는 한 가지 방법은'namelist()'에서 반환 된 파일을 필터링 한 다음 해당 목록을'extractall()'과 함께 사용하는 것입니다. – tdelaney

답변

2

import zipfile 


def main(): 
    archive = 'archive.zip' 
    directory = './' 
    extensions = ('.txt', '.pdf') 
    zip_file = zipfile.ZipFile(archive, 'r') 
    [zip_file.extract(file, directory) for file in zip_file.namelist() if file.endswith(extensions)] 
    zip_file.close() 


if __name__ == '__main__': 
    main() 
1

광산 같은 것을 할 수 있어야하는 것은 '존스의 간단한 버전입니다. 하나의 확장을 위해 작동합니다.

from zipfile import ZipFile 

with ZipFile(r'C:\scratch\folder to process\try.zip') as theZip: 
    fileNames = theZip.namelist() 
    for fileName in fileNames: 
     if fileName.endswith('py'): 
      content = theZip.open(fileName).read() 
      open(fileName, 'wb').write(content)