Kako navesti sve datoteke u direktoriju?

Kako mogu navesti sve datoteke direktorija u Pythonu i dodati ih na list ?

3196
08 июля '10 в 22:31 2010-07-08 22:31 postavila duhhunjonn 8. srpnja '10 u 22:31 2010-07-08 22:31
@ 40 odgovora
  • 1
  • 2

os.listdir() će vam pružiti sve što je u imeniku - datoteke i direktorije.

Ako samo želite datoteke, možete ih filtrirati pomoću os.path :

 from os import listdir from os.path import isfile, join onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] 

ili možete koristiti os.walk() , koji će dati dva popisa za svaki posjećeni imenik - podijeljen u datoteke i za vas. Ako vam je potreban samo glavni direktorij, možete ga jednostavno razbiti prvi put

 from os import walk f = [] for (dirpath, dirnames, filenames) in walk(mypath): f.extend(filenames) break 

Konačno, kao što je prikazano u ovom primjeru, dodavanjem jednog popisa na drugi možete koristiti .extend() ili

 >>> q = [1, 2, 3] >>> w = [4, 5, 6] >>> q = q + w >>> q [1, 2, 3, 4, 5, 6] 

Osobno više volim .extend()

3160
09 июля '10 в 0:01 2010-07-09 00:01 odgovor je dat pycruft 9. srpnja '10 u 0:01 2010-07-09 00:01

Radije koristim glob , budući da odgovara i proširuje uzorak.

 import glob print(glob.glob("/home/adam*.gif ) и может содержать подстановочные знаки в стиле оболочки. Сломанные символические ссылки включены в результаты (как в оболочке). 
...
Изменено в версии 3.5 : Поддержка рекурсивных глобусов с использованием " ** ".


[Python 3]: class pathlib. Путь (* pathsegments) (Python 3.4 +, обратный порт : [PyPI]: pathlib2 ) 

[Python 2]: dircache.listdir (путь) (только Python 2 ) 


[man7]: OPENDIR (3) / [man7]: READDIR (3) / [man7]: CLOSEDIR (3) через [Python 3]: ctypes - библиотека сторонних функций для Python (специфична для POSIX) 

ctypes - это библиотека внешних функций для Python. Он предоставляет C-совместимые типы данных и позволяет вызывать функции в DLL или общих библиотеках. Это может быть использовано, чтобы обернуть эти библиотеки в чистый Python.