C'è un modo per elencare i file (non le directory) in una directory con Python? So che potrei usare os.listdir
e un ciclo di os.path.isfile()
s, ma se c'è qualcosa di più semplice (come una funzione os.path.listfilesindir
o qualcosa del genere), probabilmente sarebbe meglio.Elenca solo i file in una directory?
risposta
Questo è a simple generator expression:
files = (file for file in os.listdir(path)
if os.path.isfile(os.path.join(path, file)))
for file in files: # You could shorten this to one line, but it runs on a bit.
...
Oppure si potrebbe fare una funzione di generatore, se si adatta meglio:
def files(path):
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
yield file
Poi basta:
for file in files(path):
...
Perché ho ottenuto un downvote su questo? –
il tuo dimenticato di aggiungere unire tra dirname e nome file – ayvango
@ayvango Questo è solo un comportamento diverso - non c'era una chiamata per dare un percorso completo nella domanda, e questo funziona così com'è in un modo ben definito. –
Si potrebbe provare pathlib, che ha anche molte altre cose utili.
Pathlib è una libreria orientata agli oggetti per l'interazione con i percorsi del file system. Per ottenere i file nella directory corrente, si può fare:
from pathlib import *
files = (x for x in Path(".") if x.is_file())
for file in files:
print(str(file), "is a file!")
Questo è, a mio parere, più che usare Pythonic os.path
.
Vedere anche: PEP 428.
Un consiglio comune è evitare questo tipo di importazione. Cioè, piuttosto importa solo quello che usi, che nel tuo caso sarebbe semplicemente 'da pathlib import Path'. – Tshepang
Mentre 'pathlib' è grande, direi che dipende dallo script in questione - se si tratta solo di file un paio di volte, a seconda di' pathlib' potrebbe essere eccessivo. –
Utilizzando pathlib in Windows come segue:
files = (x for x in Path("your_path") if x.is_file())
genera l'errore:
TypeError: 'WindowsPath' object is not iterable
Si dovrebbe invece usare Path.iterdir()
filePath = Path("your_path")
if filePath.is_dir():
files = list(x for x in filePath.iterdir() if x.is_file())
files = next(os.walk('..'))[2]
Utilizzando pathlib
, la via più breve t o elenca solo i file:
[x for x in Path("your_path").iterdir() if x.is_file()]
con supporto di profondità se necessario.
- 1. Elenca solo le directory padre comuni per i file
- 2. Elenca tutti i file in una directory PHP
- 3. File batch; Elenca i file nella directory, solo i nomi dei file?
- 4. git: elenca solo i nuovi file
- 5. Elenca tutti i file e le directory in una directory + sottodirectory
- 6. Elenca le prime righe di ogni file in una directory
- 7. WGET solo i nomi file in una directory FTP
- 8. Elenca tutti i computer nella directory attiva
- 9. git: elenca solo i file modificati per tutte le armature
- 10. Listing solo i file nella directory
- 11. Elenca i file su una dimensione specifica nella directory corrente e in tutte le sottodirectory
- 12. Elenca tutti i file ResourceBundle
- 13. Copiare i file da una directory in una directory esistente
- 14. Elenca i file nel repository git locale?
- 15. Elenca in modo ricorsivo tutti i file su sftp
- 16. Android in modalità host USB elenca i file in pendrive
- 17. come scrivere una directory [non solo i file in esso] in un file tar.gz in golang
- 18. Git: elenca tutti i file tracciati
- 19. Come attraversare i file in una directory?
- 20. Elimina tutti i file in una directory
- 21. Rimuovere tutti i file in una directory
- 22. Regex per i file in una directory
- 23. Elenca tutti i file che non iniziano con un numero
- 24. Elenca tutti i file nell'array con gulp.src()
- 25. Elenca le directory con una profondità specificata in Python
- 26. Elenca solo determinati file in una directory che corrisponde alla parola BOZO e termina con '123' o '456'
- 27. Come posso creare un semplice file index.html che elenca tutti i file/directory?
- 28. Elenca i file con git ls-file dalla root invece di directory di lavoro corrente
- 29. Elenca i file salvati nella directory dei documenti iOS in un UITableView?
- 30. Elenca i nomi di file modificati in un git stash
[related] (http://stackoverflow.com/q/6664205) – Tshepang