Nie może być trudne, ale mam blokadę umysłową.
Nie może być trudne, ale mam blokadę umysłową.
Odpowiedzi:
import os
os.listdir("path") # returns list
Jednokierunkowa:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
Powyższa glob.globmetoda nie spowoduje wyświetlenia ukrytych plików.
Ponieważ pierwotnie odpowiedziałem na to pytanie lata temu, pathlib został dodany do Pythona. Mój preferowany sposób wyświetlenia katalogu zwykle obejmuje teraz iterdirmetodę dotyczącą Pathobiektów:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')(glob tak naprawdę nie wyświetla katalogów, ale rozszerza gwiazdki i takie, które spełniają podobne zadanie).
os.walk można użyć, jeśli potrzebujesz rekurencji:
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.globlub os.listdirzrobi to.
import globENTER glob.glob(r'c:\users')ENTER wydaje się powracać ['c:\\users']. Dlaczego? Chciałbym użyć glob.glob, ponieważ, jak zauważyli inni użytkownicy, podobno zwraca zawartość katalogu, ignorując jednocześnie ukryte pliki. To jest ważne.
glob:glob.glob(r'c:\users\*')
Od wersji Python 3.5 możesz używać os.scandir.
Różnica polega na tym, że zwraca wpisy pliku, a nie nazwy. W niektórych systemach operacyjnych, takich jak Windows, oznacza to, że nie musisz os.path.isdir/filewiedzieć, czy jest to plik, czy nie, a to oszczędza czas procesora, ponieważstat jest to już zrobione podczas skanowania w systemie Windows:
przykład, aby wyświetlić katalog i wydrukować pliki większe niż max_valuebajty:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(przeczytaj tutaj moją obszerną odpowiedź na temat wydajności )
Poniższy kod wyświetli katalogi i pliki w katalogu. Drugi to 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)
.XYZpliki w kontekście uniksowego systemu plików), gdy jest używany zglob.glob("/home/username/www/.*")?