ទទួលបានបញ្ជីឈ្មោះឯកសារ និងថតក្នុង Python ។

អាជីវកម្ម

ដើម្បីទទួលបានបញ្ជីឈ្មោះឯកសារ និងថតឯកសារ (ឈ្មោះថតឯកសារ) នៅក្នុង 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']
Copied title and URL