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