Dapatkan senarai nama fail dan direktori dalam Python.

Perniagaan

Untuk mendapatkan senarai nama fail dan direktori (nama folder) dalam Python, gunakan fungsi modul os os.listdir().

os.listdir(path=’.’)
Mengembalikan senarai yang mengandungi nama entri dalam direktori yang ditentukan oleh laluan.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Modul os disertakan dalam perpustakaan standard dan tidak perlu dipasang. Walau bagaimanapun, “import” diperlukan.

Maklumat berikut disediakan di sini.

  • Dapatkan senarai kedua-dua nama fail dan direktori.
  • Dapatkan senarai nama fail sahaja
  • Dapatkan senarai nama direktori sahaja

Berikut ialah contoh struktur fail (direktori).

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

Selain os.listdir(), anda juga boleh menggunakan modul glob untuk mendapatkan senarai fail dan nama direktori (nama folder). glob membolehkan anda menentukan syarat menggunakan kad bebas (*), dsb., dan menyertakan subdirektori secara rekursif.

Dalam Python 3.4 dan lebih baru, anda juga boleh mendapatkan senarai fail dan direktori menggunakan modul pathlib, yang boleh memanipulasi laluan sebagai objek. Seperti glob di atas, ia juga boleh digunakan secara bersyarat dan rekursif.

Dapatkan senarai kedua-dua nama fail dan direktori.

Jika anda menggunakan os.listdir() sebagaimana adanya, ia akan mengembalikan senarai kedua-dua fail dan nama direktori.

import os

path = "./testdir"

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

Apa yang anda dapat ialah senarai rentetan laluan.

Dapatkan senarai nama fail sahaja

Jika anda ingin mendapatkan senarai nama fail sahaja, gunakan fungsi os.path.isfile() untuk menentukan sama ada laluan itu ialah fail. menghantar hanya nama fail sebagai hujah fungsi os.path.isfile() tidak akan berfungsi, jadi lulus laluan penuh seperti yang ditunjukkan di bawah.
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']

Dapatkan senarai nama direktori sahaja

Jika anda ingin mendapatkan senarai nama direktori sahaja, gunakan os.path.isdir() dengan cara yang sama.

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