Non può essere difficile, ma sto avendo un blocco mentale.
Non può essere difficile, ma sto avendo un blocco mentale.
Risposte:
Senso unico:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
Il glob.glob
metodo sopra non elencherà i file nascosti.
Da quando ho risposto a questa domanda anni fa, pathlib è stato aggiunto a Python. Il mio modo preferito per elencare una directory ora di solito prevede il iterdir
metodo sugli Path
oggetti:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')
(glob non elenca effettivamente le directory, ma espande asterischi e simili che compie un compito simile).
os.walk
può essere utilizzato se è necessaria la ricorsione:
import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
for filename in files:
print os.path.join(path,filename)
glob.glob
o os.listdir
lo farà.
import glob
ENTER glob.glob(r'c:\users')
ENTER sembra solo tornare ['c:\\users']
. Perché? Mi piacerebbe usare glob.glob perché come altri utenti hanno sottolineato, presumibilmente restituisce il contenuto di una directory ignorando anche i file nascosti. Questo è importante.
glob
:glob.glob(r'c:\users\*')
Il os
modulo gestisce tutta quella roba.
os.listdir(path)
Restituisce un elenco contenente i nomi delle voci nella directory fornite dal percorso. L'elenco è in ordine arbitrario. Non include le voci speciali "." e '..' anche se sono presenti nella directory.
Disponibilità: Unix, Windows.
Da Python 3.5, puoi usare os.scandir
.
La differenza è che restituisce voci di file e non nomi. Su alcuni sistemi operativi come Windows, significa che non devi os.path.isdir/file
sapere se si tratta di un file o meno, e questo fa risparmiare tempo alla CPU perché stat
è già fatto quando si esegue la scansione di dir in Windows:
esempio per elencare una directory e stampare file più grandi di max_value
byte:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(leggi una mia ampia risposta basata sulle prestazioni qui )
Il codice seguente elenca le directory e i file all'interno della directory. L'altro è os.walk
def print_directory_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)
.XYZ
file in un contesto di file system Unix), se utilizzato conglob.glob("/home/username/www/.*")
?