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.glob
metoda 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 iterdir
metodę dotyczącą Path
obiektó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.glob
lub os.listdir
zrobi to.
import glob
ENTER 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/file
wiedzieć, 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_value
bajty:
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)
.XYZ
pliki w kontekście uniksowego systemu plików), gdy jest używany zglob.glob("/home/username/www/.*")
?