Це не може бути важко, але я маю ментальний блок.
Це не може бути важко, але я маю ментальний блок.
Відповіді:
import os
os.listdir("path") # returns list
Односторонній:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
У glob.globнаведеному вище способі не буде перераховано приховані файли.
Оскільки я спочатку відповів на це питання багато років тому, pathlib був доданий до Python. Мій кращий спосіб перерахування каталогу зараз зазвичай включає iterdirметод на Pathоб'єктах:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')(глобус насправді не перераховує каталоги, але розширює зірочки і такі, що виконує подібне завдання).
os.walk можна використовувати, якщо вам потрібна рекурсія:
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або os.listdirзроблять це.
import globВхід glob.glob(r'c:\users')ENTER лише здається повертається ['c:\\users']. Чому так? Я хотів би використовувати glob.glob, оскільки, як вказували інші користувачі, він нібито повертає вміст каталогу, одночасно ігноруючи приховані файли. Це важливо.
glob:glob.glob(r'c:\users\*')
Оскільки Python 3.5 ви можете використовувати os.scandir.
Різниця полягає в тому, що він повертає записи файлів, а не імена. У деяких ОС, таких як Windows, це означає, що вам не потрібно os.path.isdir/fileзнати, чи це файл чи ні, і це економить час процесора, оскільки statце вже робиться під час сканування dir у Windows:
Приклад для переліку каталогу та друку файлів, більших за max_valueбайти:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(читайте про мій розгорнутий мій відповідь тут )
Нижче наведено список каталогів та файлів у режимі dir. Інший - 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файли в контексті файлової системи Unix), коли використовується зglob.glob("/home/username/www/.*")?