Inizialmente stavo pensando di utilizzare os.path.isdir
ma non penso che questo funzioni per i file zip. C'è un modo per sbirciare nel file zip e verificare che questa directory esista? Vorrei evitare di utilizzare il più possibile unzip -l "[email protected]"
, ma se questa è l'unica soluzione, suppongo di non avere scelta.Verificare se esiste una directory in un file zip con Python
risposta
Basta controllare il nome del file con "/" alla fine di esso.
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")
si utilizza questa linea
any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())
perché è possibile che archivio contiene nessuna directory in modo esplicito; solo un percorso con un nome di directory.
risultato dell'esecuzione:
$ 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
È possibile verificare le directory con ZipFile.namelist().
import os, zipfile
dir = "some/directory/"
z = zipfile.ZipFile("myfile.zip")
if dir in z.namelist():
print "Found %s!" % dir
Questo funziona per i file ma non per le directory :(almeno non per me –
Prova a stampare il 'namelist()' del tuo file .zip per assicurarti che la tua directory sia formattata correttamente – enderskill
Sì, mi sono assicurato che la directory sia Ecco, sto cercando di farlo per i file docx, che sono comunque file zip in modo che non abbia importanza, vero? –
È possibile ottenere questo risultato utilizzando il built-in libreria ZipFile.
import zipfile
z = zipfile.ZipFile("file.zip")
if "DirName/" in [member.filename for member in z.infolist()]:
print("Directory exists in archive")
Testato e funzionante con Python32.
Per qualsiasi motivo non funziona con i file docx. :( –
Stai cercando di usare un file docx invece di un zip? Rinominare l'estensione in .zip e riprovare, dovrebbe funzionare. – Lanaru
Funziona bene decomprimere, e posso farlo stampare tutti i file. directory "word" non è in namelist(), piuttosto singoli file, come word/webSettings.xml quindi non ottiene una corrispondenza. –
- 1. Verificare se esiste una directory in PHP
- 2. Verificare se esiste una directory o
- 3. Script Python per verificare se un file zip è corrotto
- 4. Come posso verificare se esiste una directory?
- 5. Come verificare un file se esiste con jolly in Java?
- 6. Come verificare se esiste una directory/file/collegamento simbolico con un comando in Ruby
- 7. Verificare se esiste un file in Yii
- 8. Come posso verificare se esiste un file o una directory di file in bash?
- 9. come verificare se un file è una directory o un file normale in python?
- 10. Verificare se un file o una directory in Java
- 11. Come verificare se esiste una determinata directory in Ruby
- 12. Come verificare se in Golang esiste un file o una directory denotata da un percorso?
- 13. Come verificare se un file esiste in una directory nella scheda SD
- 14. Come verificare se un file esiste in una cartella?
- 15. Verificare se il file esiste in ksh
- 16. controllare se il file esiste in una directory specifica
- 17. Come verificare se esiste un record con Python MySQdb
- 18. In Linux, zip più directory in un unico file zip
- 19. Come verificare se esiste un file
- 20. come posso verificare se esiste un file?
- 21. Come posso verificare se esiste una directory utilizzando SQL Server?
- 22. Come verificare se esiste un file o una directory senza utilizzare fs.exists?
- 23. Verificare se qualsiasi tipo di file esiste in una directory utilizzando script batch
- 24. posso verificare se esiste un file in un URL?
- 25. Come verificare se il file esiste nel file zip usando dotnetzip
- 26. posso verificare se esiste un file in un URL?
- 27. Come verificare se esiste directory in C++ e WinAPI
- 28. Verificare se un valore esiste in una matrice
- 29. Verificare se l'ID esiste in una collezione con mangusta
- 30. Verificare se esiste una chiave in Memcache
Grazie! Beh, questo ha funzionato con l'esempio che hai fornito, ma sto cercando di farlo per i file docx. Fondamentalmente sto verificando se il file zip contiene la directory "word", ma mi sta dando risposte false :( –
Basta provare a stampare l'elenco di file nel tuo 'docx' e vedere cosa c'è di strano con esso:' stampa zipfile.ZipFile ("sample.docx", "r"). Namelist() ' –
Suppongo che tu abbia un prefisso prima di 'word'. Per favore controllalo. –