ដើម្បីទទួលបានបញ្ជីឈ្មោះឯកសារ និងថតឯកសារ (ឈ្មោះថតឯកសារ) នៅក្នុង Python សូមប្រើមុខងារ os module 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 ដែលអាចរៀបចំផ្លូវជាវត្ថុ។ ដូច globs ខាងលើ វាក៏អាចប្រើតាមលក្ខខណ្ឌ និងប្រើឡើងវិញបានផងដែរ។
ទទួលបានបញ្ជីឈ្មោះឯកសារ និងថតឯកសារ។
ប្រសិនបើអ្នកប្រើ 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']