Λήψη μιας λίστας ονομάτων αρχείων και καταλόγων στην Python.

Επιχείρηση

Για να λάβετε μια λίστα με ονόματα αρχείων και καταλόγων (ονόματα φακέλων) στην Python, χρησιμοποιήστε τη συνάρτηση os.listdir() της ενότητας os.

os.listdir(path='.')
Επιστρέφει μια λίστα που περιέχει τα ονόματα των καταχωρήσεων στον κατάλογο που καθορίζεται από τη διαδρομή.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Η ενότητα os περιλαμβάνεται στην τυπική βιβλιοθήκη και δεν χρειάζεται να εγκατασταθεί. Ωστόσο, απαιτείται η «import».

Οι ακόλουθες πληροφορίες παρέχονται εδώ.

  • Λήψη μιας λίστας ονομάτων αρχείων και καταλόγων.
  • Λήψη μιας λίστας μόνο με ονόματα αρχείων
  • Λήψη μιας λίστας μόνο με ονόματα καταλόγων

Ακολουθεί ένα παράδειγμα δομής αρχείου (καταλόγου).

.
└── 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']