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 ඔබට Wildcards (*) ආදිය භාවිතා කරමින් කොන්දේසි නියම කිරීමට ඉඩ සලසයි, සහ පුනරාවර්තන ලෙස උප බහලුම් ඇතුළත් කරන්න.

Python 3.4 සහ ඊට පසු, පැත්ලිබ් මොඩියුලය භාවිතයෙන් ගොනු සහ නාමාවලි ලැයිස්තුවක් ලබා ගත හැකි අතර, එමඟින් මාර්ග වස්තූන් ලෙස හැසිරවිය හැකිය. ඉහත 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