동일한 구조를 가진 여러 zip 파일이 있습니다. 루트 파일에는 XML 파일이 포함되어 있습니다. 각 zip 파일의 모든 파일은 고유합니다 (zip 파일 전체에 중복되지 않음). 모든 zip 파일의 모든 XML 파일을 하나의 zip 파일 (원래 zip 파일과 동일한 구조)에 결합해야합니다. 이 일을 가장 잘 수행 할 수있는 방법에 대한 제안? 감사.파이썬에서 여러 zip 파일을 하나의 zip 파일로 병합합니다.
답변
이 내가 가지고 올 수있는 짧은 버전 : 대안을 테스트하지 않고
>>> import zipfile as z
>>> z1 = z.ZipFile('z1.zip', 'a')
>>> z2 = z.ZipFile('z2.zip', 'r')
>>> z1.namelist()
['a.xml', 'b.xml']
>>> z2.namelist()
['c.xml', 'd.xml']
>>> [z1.writestr(t[0], t[1].read()) for t in ((n, z2.open(n)) for n in z2.namelist())]
[None, None]
>>> z1.namelist()
['a.xml', 'b.xml', 'c.xml', 'd.xml']
>>> z1.close()
, 나에게이 (너무 아마도 가장 눈에 띄는!) 최고 솔루션 때문에 - 모두 zip 파일을 가정하는 것이 포함되어 있습니다 같은 양의 데이터를 사용하는 경우이 방법을 사용하면 절반 만 압축 해제하고 다시 압축해야합니다 (1 파일).
추 신 : 목록 작성은 콘솔의 한 줄에 명령을 보관하면됩니다 (디버깅 속도가 빨라짐). 좋은 pythonic 코드는 for
루프가 필요합니다. 결과 목록은 아무런 도움이되지 않습니다.
HTH!
감사합니다. 비록 다양한 수의 zip 파일을 갖게 될 것이므로보다 일반적인 접근 방식이 필요합니다. –
@DaveCrumbacher : 내가 오해하지 않는 한, 하나 이상의 파일을 병합하는 데이 방법을 사용하려면 루프를 추가해야합니다. 'for zfile in (z2, z3, z4, ...)'... 또는 나는 무엇인가 놓치고 있냐? – mac
예, @mac, 당신 말이 맞아요. 감사. –
@mac 덕분에 나왔습니다. 이것이 현재 구현 된 방식으로 첫 번째 zip 파일은 다른 zip 파일의 모든 파일을 포함하도록 수정됩니다.
import zipfile as z
zips = ['z1.zip', 'z2.zip', 'z3.zip']
"""
Open the first zip file as append and then read all
subsequent zip files and append to the first one
"""
with z.ZipFile(zips[0], 'a') as z1:
for fname in zips[1:]:
zf = z.ZipFile(fname, 'r')
for n in zf.namelist():
z1.writestr(n, zf.open(n).read())
'zipfile.ZipFile()'은 컨텍스트 관리자이기도하므로'z1.close()'를'z.ZipFile (zips [0], 'a')로 바꿀 수 있습니다. 후속 코드. 독서 대상과 동일합니다. – glglgl
감사합니다. @glglgl. 이 방법을 반영하기 위해 내 대답을 업데이트했습니다. –
- 1. 여러 파일을 zip 파일로 파이프
- 2. 다른 zip 파일로 zip 파일을 복사하려면
- 3. ZIP 파일을 하나의 파일로 스트리밍하려면 어떻게해야합니까?
- 4. 파이썬을 사용하여 두 개의 zip 파일을 병합합니다.
- 5. 하나의 zip 폴더에 여러 파일을 추가하는 방법
- 6. 서버에서 여러 zip 파일을 하나의 zip 파일로 다운로드 할 수 있습니까?
- 7. Zip 파일로 PHP
- 8. Zip 폴더의 이름을 zip 파일로 지정하십시오.
- 9. 파일 구조의 실제 Zip 파일로 CURL을 통해 Zip 파일을 다운로드하십시오.
- 10. Azure Blob - 다운로드하기 전에 하나의 zip 파일에 여러 파일로 작성
- 11. MVC3은 여러 PDF를 Zip 파일로 반환합니다.
- 12. MsBuild 디렉토리의 모든 파일을 Zip 파일로 압축
- 13. 임베디드 파이썬에서 zip 파일을로드하십시오.
- 14. PHP에서 여러 파일로 구성된 Zip 파일
- 15. bytearray를 zip 파일로 변환하는 방법
- 16. 여러 zip 파일에 php zip 파일
- 17. 파이썬에서 유효한 zip 파일
- 18. 폴더를 zip 파일로 바꾸기
- 19. PHP에서 zip 파일로 작업하기
- 20. python 2.7 zip 파일로 작업하기
- 21. ZIP 파일을 임의의 텍스트 파일로 변환해야합니다.
- 22. .zip 파일을 레일즈의 이메일 첨부 파일로 보내기
- 23. 스칼라를 사용하여 여러 파일을 .zip 파일로 아카이브하는 방법은 무엇입니까?
- 24. Zip 패키지로 여러 파일의 ZIP 파일 생성 - 문제가 있습니까?
- 25. Windows 디렉터리를 zip 파일로 유지
- 26. Zip 파일을 NSData로 변환하여 Zip 파일을 첨부 파일로 이메일로 보내려면 어떻게해야합니까?
- 27. Java ZIP 파일 하나의 zip에서 다른 Zip 파일로 복사하여 붙여 넣기
- 28. Cherry Py로 파이썬에서 zip 파일 스트림 만들기?
- 29. Zip 파일로 작업 할 자바 라이브러리
- 30. ZIP 형식의 JPG + Zip 파일 조합 문제
모두 압축을 풀고 새 것을 만드시겠습니까? – sarnold
가장 확실한 방법이 될 것입니다. 또한 하나를 최종 zip 파일로 선택하고 다른 파일에서 파일을 추출하여 마지막 파일에 추가 할 수 있습니다. 그러나 더 빠를 것인지는 확실하지 않습니다. – jgritty
@sarnold 감사합니다. 나도이 접근법을 생각하고 있었지만 더 우아한 방법이 있는지 확실하지 않았습니다. –