A fájl- és könyvtárnevek listájának lekérdezése Python nyelven.

Üzleti

A Pythonban a fájl- és könyvtárnevek (mappanevek) listájának lekérdezéséhez használja az os modul os.listdir() függvényét.

os.listdir(path='.')
Visszaad egy listát, amely a path által megadott könyvtárban található bejegyzések neveit tartalmazza.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Az os modul benne van a szabványos könyvtárban, és nem kell telepíteni. Az “import” azonban szükséges.

A következő információk itt találhatók.

  • A fájl- és könyvtárnevek listájának lekérdezése.
  • Csak a fájlnevek listájának lekérdezése
  • Csak a könyvtárnevek listájának lekérdezése

A következő egy példa egy fájl (könyvtár) szerkezetére.

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

Az os.listdir() mellett a glob modult is használhatja a fájl- és könyvtárnevek (mappanevek) listájának lekérdezésére.A glob lehetővé teszi a feltételek megadását a jokerek (*) stb. használatával, valamint az alkönyvtárak rekurzív bevonását.

A Python 3.4 és újabb verziókban lehetőség van fájlok és könyvtárak listájának lekérdezésére is a pathlib modul segítségével, amely objektumként tudja kezelni az elérési utakat. A fenti globs-hoz hasonlóan ez is használható feltételesen és rekurzívan.

A fájl- és könyvtárnevek listájának lekérdezése.

Ha az os.listdir() parancsot használjuk, akkor az a fájl- és könyvtárnevek listáját adja vissza.

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

Egy listát kapunk az elérési útvonalakról.

Csak a fájlnevek listájának lekérdezése

Ha csak fájlnevek listáját szeretné megkapni, használja az os.path.isfile() függvényt annak megállapítására, hogy az útvonal egy fájl-e. Ha csak a fájlnevet adja meg az os.path.isfile() függvény argumentumaként, az nem fog működni, ezért adja meg a teljes útvonalat az alábbiak szerint.
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

Csak a könyvtárnevek listájának lekérdezése

Ha csak a könyvtárnevek listáját szeretné megkapni, használja az os.path.isdir() parancsot ugyanígy.

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']
Copied title and URL