2011-09-15 4 views

답변

3

나는 그것이 가능하지 않다고 생각한다. zipfile 모듈은 그것에 대한 방법이없고, Renaming a File/Folder inside a Zip File in Java?에서 언급했듯이 zip 파일의 내부 구조가 방해가된다. 따라서 압축을 풀고 이름을 변경하고 압축을 풀어야합니다.

업데이트 : 그냥 Delete file from zipfile with the ZipFile Module을 발견했습니다.

+0

좋아요, 어떻게하면 zip 폴더에있는 디렉토리를 삭제할 수 있습니까? – user715578

+0

삭제는 shutil.rmtree의 os.rmdir을 사용하여 수행 할 수 있지만 폴더의 이름을 바꾸려면 shutil.move – rocksportrocker

+0

을 사용하면됩니다. 실제로 zip 폴더의 파일을 어떻게 삭제합니까? – user715578

2

rocksportrocker에서 언급했듯이 zipfile 보관 파일에서 파일의 이름을 바꾸거나 지울 수 없습니다. zip 파일의 파일을 반복하여 원하는 파일을 선택적으로 추가 할 수 있습니다. 따라서 zip 파일에서 특정 디렉토리를 제거하려면 새 zip 파일로 복사하지 마십시오. 그러면 다음과 같이됩니다 :

source = ZipFile('source.zip', 'r') 
target = ZipFile('target.zip', 'w', ZIP_DEFLATED) 
for file in source.filelist: 
    if not file.filename.startswith('directory-to-remove/'): 
     target.writestr(file.filename, source.read(file.filename)) 
target.close() 
source.close() 

이렇게하면 모든 파일을 메모리로 읽어 들일 수 있으므로 큰 아카이브의 경우에는 이상적인 솔루션이 아닙니다. 작은 아카이브의 경우 이는 광고 된대로 작동합니다.

+0

전체 파일을 실제로 메모리에로드합니까? – swdev