Popis datoteka direktorija u Pythonu
Ispisivanje svih datoteka u direktoriju uobičajen je zadatak u programiranju u Pythonu, bilo da organizirate datoteke, obrađujete podatke ili automatizirate zadatke. Python nudi nekoliko metoda za jednostavno i učinkovito postizanje toga.
U ovom ćemo članku istražiti različite načine popisa svih datoteka u direktoriju pomoću Pythona i kako ih dodati na popis. Na kraju ćete jasno razumjeti kako programski upravljati sadržajem direktorija u svojim Python projektima.
Naredba | Opis |
---|---|
os.walk(directory_path) | Generira nazive datoteka u stablu direktorija hodajući odozgo prema dolje ili odozdo prema gore. |
os.path.join(root, file) | Spaja jednu ili više komponenti staze na inteligentan način, dodajući potrebne separatore direktorija. |
Path(directory_path) | Stvara objekt Path za navedenu stazu direktorija, pružajući različite metode za rukovanje stazama datotečnog sustava. |
path.rglob('*') | Rekurzivno daje sve postojeće datoteke koje odgovaraju navedenom uzorku u direktoriju. |
file.is_file() | Vraća True ako je staza obična datoteka (ne direktorij ili simbolička veza). |
str(file) | Pretvara objekt Path u prikaz niza putanje datoteke. |
Razumijevanje skripti popisa direktorija u Pythonu
Prva skripta koristi modul, točnije funkcija, za kretanje stablom imenika. Ova funkcija generira nazive datoteka u stablu direktorija, počevši od gornjeg direktorija prema dolje do lisnih direktorija. Unutar ove petlje koristimo za ispravno spajanje staze direktorija i naziva datoteke, osiguravajući da je konačna staza važeća bez obzira na operativni sustav. Staze svih datoteka tada se dodaju u files_list lista, koja se vraća na kraju funkcije. Ova je metoda učinkovita za velike strukture direktorija jer postupno obrađuje datoteke.
Drugi scenarij koristi knjižnica, koja pruža objektno orijentirano sučelje za interakciju s datotečnim sustavom. Počinjemo stvaranjem a objekt za dati imenik. The metoda se koristi za rekurzivno pronalaženje svih datoteka koje odgovaraju zadanom uzorku. The file.is_file() metoda provjerava je li svaka pronađena staza obična datoteka. Ako jest, pretvaramo objekt nizu pomoću i dodajte ga u . Ovaj pristup je moderniji i često se preferira zbog njegove čitljivosti i jednostavnosti korištenja. Također rukuje različitim vrstama staza (kao što su simboličke veze) na graciozniji način.
Korištenje Pythona za popis datoteka direktorija i dodavanje na popis
Python - Korištenje os i os.path biblioteka
import os
def list_files_in_directory(directory_path):
files_list = []
for root, dirs, files in os.walk(directory_path):
for file in files:
files_list.append(os.path.join(root, file))
return files_list
# Example usage
directory_path = '/path/to/directory'
files = list_files_in_directory(directory_path)
print(files)
Ispisivanje svih datoteka u direktoriju i dodavanje na popis u Pythonu
Python - korištenje biblioteke pathlib
from pathlib import Path
def list_files(directory_path):
path = Path(directory_path)
files_list = [str(file) for file in path.rglob('*') if file.is_file()]
return files_list
# Example usage
directory_path = '/path/to/directory'
files = list_files(directory_path)
print(files)
Napredne tehnike za popis datoteka direktorija u Pythonu
Uz prethodno razmotrene metode, još jedan moćan pristup za ispisivanje datoteka u direktoriju uključuje korištenje funkcija. Ova metoda vraća iterator od objekti koji sadrže informacije o datotekama i direktorijima. Učinkovitije je od ili os.walk() jer dohvaća unose imenika i njihove atribute u jednom pozivu sustava. Ovo može biti osobito korisno kada radite s velikim imenicima ili kada trebate filtrirati datoteke na temelju njihovih atributa, kao što je veličina ili vrijeme izmjene.
Druga napredna tehnika uključuje korištenje modul, koji pruža funkciju za proširenje uzorka naziva putanje. The funkcija vraća popis staza koje odgovaraju određenom uzorku. Za rekurzivni popis datoteka, može se koristiti s recursive=True parametar. Ova je metoda vrlo učinkovita za jednostavno podudaranje uzoraka i često se koristi u cjevovodima za obradu podataka gdje je potrebno obraditi određene vrste datoteka. Nadalje, integracija ovih metoda s bibliotekama za paralelnu obradu poput može značajno ubrzati rad datotečnog sustava korištenjem višejezgrenih procesora.
- Kako mogu navesti samo određene vrste datoteka u direktoriju?
- Koristiti funkcija za podudaranje i popis datoteka s određenim nastavkom.
- Kako mogu dobiti veličinu svake datoteke dok ih navodim?
- Koristiti da biste dobili veličinu svake datoteke u bajtovima.
- Mogu li sortirati datoteke prema datumu izmjene?
- Da, koristiti za dohvaćanje vremena izmjene i sortiranje u skladu s tim.
- Kako mogu izuzeti određene datoteke ili direktorije?
- Upotrijebite uvjete unutar svoje petlje za filtriranje datoteka ili direktorija na temelju njihovih imena ili staza.
- Je li moguće ispisati datoteke u zip arhivi bez njihovog izdvajanja?
- Da, koristite klasa i njezina metoda za popis datoteka unutar zip arhive.
- Mogu li koristiti regularne izraze za filtriranje datoteka?
- Da, kombinirati modul sa za filtriranje datoteka na temelju uzoraka.
- Kako mogu rukovati simboličkim vezama dok ispisujem datoteke?
- Koristiti provjeriti je li staza simbolička poveznica i rukovati njome u skladu s tim.
- Što ako trebam ispisati datoteke na udaljenom poslužitelju?
- Koristite knjižnice poput za SSH i SFTP za popis datoteka na udaljenom poslužitelju.
- Kako mogu izbrojati broj datoteka u direktoriju?
- Koristiti za brojanje datoteka u direktoriju.
Zaključno, Python nudi više robusnih metoda za ispisivanje datoteka u direktoriju i njihovo dodavanje na popis. Os modul je svestran izbor za sveobuhvatno obilaženje direktorija, dok biblioteka pathlib nudi objektno orijentirani pristup koji poboljšava čitljivost koda i lakoću održavanja. Osim toga, modul glob ističe se u podudaranju uzoraka i pojednostavljuje zadatke pretraživanja datoteka. Razumijevanjem i korištenjem ovih alata, programeri mogu učinkovito upravljati i obrađivati sadržaj direktorija u svojim Python projektima.