Dobijte popis naziva datoteka i direktorija u Pythonu.

Poslovanje

Da biste dobili popis naziva datoteka i direktorija (naziva mapa) u Pythonu, koristite funkciju os modula os.listdir().

os.listdir(path=’.’)
Vraća popis koji sadrži nazive unosa u direktoriju navedenom stazom.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

OS modul je uključen u standardnu ​​biblioteku i ne treba ga instalirati. Međutim, potreban je “uvoz”.

Ovdje su navedene sljedeće informacije.

  • Dobijte popis imena datoteka i imenika.
  • Dobijte samo popis naziva datoteka
  • Dobijte samo popis imena imenika

Slijedi primjer strukture datoteke (direktorija).

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

Osim os.listdir(), također možete koristiti glob modul za dobivanje popisa naziva datoteka i direktorija (naziva mapa). glob vam omogućuje da odredite uvjete pomoću zamjenskih znakova (*) itd., i rekurzivno uključite poddirektorije.

U Pythonu 3.4 i novijim verzijama također je moguće dobiti popis datoteka i direktorija pomoću modula pathlib, koji može manipulirati stazama kao objektima. Poput globusa iznad, također se može koristiti uvjetno i rekurzivno.

Dobijte popis imena datoteka i imenika.

Ako koristite os.listdir() kakav jest, vratit će popis imena datoteka i direktorija.

import os

path = "./testdir"

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

Ono što dobijete je popis nizova putanja.

Dobijte samo popis naziva datoteka

Ako želite dobiti popis samo naziva datoteka, upotrijebite funkciju os.path.isfile() da odredite je li put datoteka. prosljeđivanje samo naziva datoteke kao argumenta funkcije os.path.isfile() neće raditi, stoga proslijedite cijeli put kao što je prikazano u nastavku.
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']

Dobijte samo popis imena imenika

Ako želite dobiti samo popis imena direktorija, koristite os.path.isdir() na isti način.

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']