처음에는 os.path.isdir
을 사용하려고 생각했지만이 파일은 zip 파일로는 작동하지 않습니다. zip 파일을 들여다보고이 디렉토리가 있는지 확인하는 방법이 있습니까? 가능한 한 많이 unzip -l "[email protected]"
을 사용하지 못하게하고 싶습니다. 그러나 이것이 유일한 해결책이라면 나는 선택의 여지가 없다고 생각합니다.디렉토리가 파이썬이있는 zip 파일에 있는지 확인하십시오.
답변
끝에 "/"로 파일 이름을 확인하십시오. 이 아카이브에는 디렉토리를 명시 적으로 포함하지 않는 것이 가능하기 때문에
import zipfile
def isdir(z, name):
return any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())
f = zipfile.ZipFile("sample.zip", "r")
print isdir(f, "a")
print isdir(f, "a/b")
print isdir(f, "a/X")
는이 라인
any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())
를 사용; 디렉토리 이름이있는 경로.
실행 결과 : 당신은 내장 된 라이브러리 ZipFile를 사용하여이 작업을 수행 할 수
$ mkdir -p a/b/c/d
$ touch a/X
$ zip -r sample.zip a
adding: a/ (stored 0%)
adding: a/X (stored 0%)
adding: a/b/ (stored 0%)
adding: a/b/c/ (stored 0%)
adding: a/b/c/d/ (stored 0%)
$ python z.py
True
True
False
ZipFile.namelist()으로 디렉토리를 확인할 수 있습니다.
import os, zipfile
dir = "some/directory/"
z = zipfile.ZipFile("myfile.zip")
if dir in z.namelist():
print "Found %s!" % dir
이것은 파일이 아닌 디렉토리에서 작동합니다. (적어도 나에게는 적합하지 않습니다.) –
.zip 파일의'namelist()'를 출력하여 디렉토리의 형식이 올바른지 확인하십시오. – enderskill
그래, 디렉토리가 있는지 확인했습니다. 거기에 .docx 파일을 위해 노력하고있어, 어쨌든 그렇게 중요하지 않아야한다. –
.
import zipfile
z = zipfile.ZipFile("file.zip")
if "DirName/" in [member.filename for member in z.infolist()]:
print("Directory exists in archive")
Python32에서 테스트되고 작동합니다.
어떤 이유로 든 docx 파일에서 작동하지 않습니다. : –
zip 대신 docx 파일을 사용하려고합니까? 확장명을 .zip으로 바꾸고 다시 시도하면 정상적으로 작동합니다. – Lanaru
압축이 잘 풀리지 만 모든 파일을 인쇄 할 수 있습니다. 디렉토리 "word"는 namelist()에 없으며 word/webSettings.xml과 같은 개별 파일이 아니므로 일치하지 않습니다. –
- 1. 파일에 파이썬이있는 CSV 형식이 있는지 확인하십시오.
- 2. 디렉토리가 LotusScript에 있는지 확인하십시오.
- 3. 디렉토리가 클라이언트의 PC에 있는지 확인하십시오.
- 4. Ruby에서 디렉토리가 비어 있는지 확인하십시오.
- 5. PHP - 파일에 ASCII 만 포함되어 있는지 확인하십시오.
- 6. 주어진 경로에 Zip 파일이 있는지 확인하십시오.
- 7. 텍스트 파일에 항목이 있는지 확인하십시오.
- 8. 파일에 비디오 스트림이 있는지 확인하십시오.
- 9. 디렉토리가 파이썬에서 유효한지 확인하십시오
- 10. 안드로이드의 sdcard에 디렉토리가 존재하는지 확인하십시오.
- 11. MediaElement : 지원되는 형식이 파일에 포함되어 있는지 확인하십시오.
- 12. ant를 사용하여 특정 문자열이 파일에 있는지 확인하십시오.
- 13. 텍스트 파일에 단어가 있는지 확인하십시오. C++
- 14. PHP 파일에 문자열이 포함되어 있는지 확인하십시오.
- 15. 항목이 이미 txt 파일에 있는지 확인하십시오.
- 16. 파일에 X 행 이상이 있는지 확인하십시오.
- 17. CSS 파일에 모든 배경 이미지가 있는지 확인하십시오.
- 18. 파일에 다른 파일이 들어 있는지 확인하십시오.
- 19. Bash 쉘 스크립트 : 하나 이상의 디렉토리가 있는지 확인하십시오.
- 20. C# 주어진 파일 경로에 루트 디렉토리가 있는지 확인하십시오.
- 21. Objective-C/iPhone에서 zip 파일이 암호로 보호되어 있는지 확인하십시오.
- 22. pwd가/bash에 있는지 확인하십시오.
- 23. 디렉토리가 (파일 시스템) 루트인지 확인하십시오.
- 24. 필드가 매핑되어 있는지 확인하십시오.
- 25. 여러 zip 파일에 php zip 파일
- 26. zip 파일에 액세스
- 27. ZIP 파일에 파일 추가
- 28. Jlabel에 아이콘이 있는지 확인하십시오.
- 29. 파일에이 텍스트가 포함되어 있는지 확인하십시오
- 30. 개미 : 항아리에 클래스가 있는지 확인하십시오.
고마워요! 당신이 제공 한 샘플로 잘 작동합니다.하지만 docx 파일에 대해 이렇게하려고합니다. 기본적으로 zip 파일에 "단어"디렉터리가 포함되어 있는지 확인하고 있지만 잘못된 응답을 제공하고 있습니다. : –
그냥'docx'에있는 파일 목록을 출력하고 그것으로 이상한 것을 보자 :'print zipfile.ZipFile ("sample.docx", "r"). namelist()' –
'word' 앞에 접두사가 있다고 가정합니다. 그것을 확인하십시오. –