Upang makakuha ng listahan ng mga pangalan ng file at direktoryo (mga pangalan ng folder) sa Python, gamitin ang os module function na os.listdir().
os.listdir(path=’.’)
Nagbabalik ng listahan na naglalaman ng mga pangalan ng entry sa direktoryo na tinukoy ng path.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Ang os module ay kasama sa karaniwang library at hindi kailangang i-install. Gayunpaman, kailangan ang “import”.
Ang sumusunod na impormasyon ay ibinigay dito.
- Kumuha ng listahan ng parehong mga pangalan ng file at direktoryo.
- Kumuha lamang ng listahan ng mga pangalan ng file
- Kumuha lamang ng listahan ng mga pangalan ng direktoryo
Ang sumusunod ay isang halimbawa ng istraktura ng file (direktoryo).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Bilang karagdagan sa os.listdir(), maaari mo ring gamitin ang glob module upang makakuha ng listahan ng mga pangalan ng file at direktoryo (mga pangalan ng folder). Pinapayagan ka ng glob na tukuyin ang mga kundisyon gamit ang mga wildcard (*), atbp., at recursively isama ang mga subdirectory.
Sa Python 3.4 at mas bago, posible ring makakuha ng listahan ng mga file at direktoryo gamit ang pathlib module, na maaaring manipulahin ang mga landas bilang mga bagay. Tulad ng mga glob sa itaas, maaari din itong gamitin nang may kondisyon at recursively.
Kumuha ng listahan ng parehong mga pangalan ng file at direktoryo.
Kung gagamit ka ng os.listdir() gaya ng dati, magbabalik ito ng listahan ng parehong mga pangalan ng file at direktoryo.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Ang makukuha mo ay isang listahan ng mga string ng path.
Kumuha lamang ng listahan ng mga pangalan ng file
Kung gusto mong makakuha ng isang listahan ng mga pangalan lamang ng file, gamitin ang os.path.isfile() function upang matukoy kung ang path ay isang file. ang pagpasa lamang ng pangalan ng file bilang argumento ng os.path.isfile() function ay hindi gagana, kaya ipasa ang buong path tulad ng ipinapakita sa ibaba.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']
Kumuha lamang ng listahan ng mga pangalan ng direktoryo
Kung gusto mong makakuha ng listahan ng mga pangalan ng direktoryo lamang, gamitin ang os.path.isdir() sa parehong paraan.
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']