Python хэл дээрх файл, лавлах нэрсийн жагсаалтыг аваарай.

Бизнес эрхэлдэг

Python дээр файл болон директорийн нэрсийн жагсаалтыг (хавтасны нэр) авахын тулд os модулийн os.listdir() функцийг ашиглана уу.

os.listdir(path=’.’)
Замаар заасан лавлах дахь оруулгын нэрийг агуулсан жагсаалтыг буцаана.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Os модуль нь стандарт номын санд багтсан бөгөөд суулгах шаардлагагүй. Гэсэн хэдий ч “импорт” шаардлагатай.

Дараах мэдээллийг эндээс хүргэж байна.

  • Файл болон директорийн нэрсийн жагсаалтыг авна уу.
  • Зөвхөн файлын нэрсийн жагсаалтыг авна уу
  • Зөвхөн лавлах нэрсийн жагсаалтыг аваарай

Дараах нь файлын (сангийн) бүтцийн жишээ юм.

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

os.listdir()-ээс гадна та glob модулийг ашиглан файл болон лавлах нэрийн жагсаалтыг (хавтас нэр) авах боломжтой. glob нь орлуулагч тэмдэгт (*) гэх мэт нөхцөлүүдийг зааж өгөх ба дэд сангуудыг рекурсив байдлаар оруулах боломжийг олгодог.

Python 3.4 болон түүнээс хойшхи хувилбаруудад замуудыг объект болгон өөрчлөх боломжтой pathlib модулийг ашиглан файл, лавлах жагсаалтыг авах боломжтой. Дээрх бөмбөрцөгүүдийн нэгэн адил үүнийг нөхцөлт болон рекурсив байдлаар ашиглаж болно.

Файл болон директорийн нэрсийн жагсаалтыг авна уу.

Хэрэв та os.listdir()-г байгаагаар нь ашиглавал файл болон директорийн нэрсийн жагсаалтыг буцаана.

import os

path = "./testdir"

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

Таны олж авсан зүйл бол замын мөрүүдийн жагсаалт юм.

Зөвхөн файлын нэрсийн жагсаалтыг авна уу

Хэрэв та зөвхөн файлын нэрсийн жагсаалтыг авахыг хүсвэл зам нь файл мөн эсэхийг тодорхойлохын тулд os.path.isfile() функцийг ашиглана уу. os.path.isfile() функцийн аргумент болгон зөвхөн файлын нэрийг дамжуулах нь ажиллахгүй тул доор үзүүлсэн шиг бүтэн замыг дамжуулна уу.
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']

Зөвхөн лавлах нэрсийн жагсаалтыг аваарай

Хэрэв та зөвхөн лавлах нэрсийн жагсаалтыг авахыг хүсвэл os.path.isdir()-г мөн адил ашиглана уу.

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