Це не може бути важко, але я маю ментальний блок.
Це не може бути важко, але я маю ментальний блок.
Відповіді:
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/.*")
?