目次
1. Sissejuhatus
Python on failide käsitlemisel väga paindlik ning lihtsa koodiga saab automatiseerida palju ülesandeid. Selles artiklis tutvustame mõningaid viise, kuidas Pythoniga „failinime hankida“ meetodit. Eelkõige keskendume standardraamatukogudeleos
moodulile ja pathlib
moodulile. Selle artikli lugemisega õpid, kuidas tõhusalt manipuleerida kataloogi failidega, ning kuidas luua skripte, mis hangivad ja filtreerivad failinimesid.2. Pythoni failinime hankimise põhitõed
Alustame Pythoni failinime hankimise põhilistest meetoditest.os.path.basename()
funktsiooni kasutades, saate määratud teelt failinime kätte.2.1 os.path.basename()
kasutamine
os.path.basename()
on funktsioon, mis võtab täisteelt ainult failinime. Järgnevas näites eraldatakse failinimi failiteelt.import os
file_path = "/user/home/document/file.txt"
file_name = os.path.basename(file_path)
print(file_name) # Tulemus: "file.txt"
2.2 os.path.dirname()
abil kataloogi nime hankimine
Samamoodi, kasutades os.path.dirname()
, saate failiteelt kataloogi nime kätte. Sellega on võimalik eraldada failinimi ja kataloogi nimi.dir_name = os.path.dirname(file_path)
print(dir_name) # Tulemus: "/user/home/document"

3. Kogu failinime hankimine kataloogist
Kataloogis olevate kõigi failide ja kaustade loetlemiseks onos.listdir()
mugav. Lisaks on os.walk()
kasulik, et hankida alamkataloogide failid rekursiivselt.3.1 os.listdir()
abil failinime hankimine
os.listdir()
kasutades saab määratud kataloogis olevad kõik failid ja kaustad loetelu kujul hankida. See sobib ideaalselt lihtsate kataloogitoimingute jaoks.import os
dir_path = "/user/home/document"
files = os.listdir(dir_path)
print(files) # Tulemus: ["file1.txt", "file2.txt", "subfolder"]
3.2 os.walk()
abil rekursiivne failinime hankimine
Kui soovid hankida failid rekursiivselt, kaasa arvatud alamkataloogid, on os.walk()
kasutamine kõige tõhusam. Allolevas koodis kuvatakse loetelu kõigist failidest, mis asuvad määratud kataloogis ja selle alamkataloogides.import os
dir_path = "/user/home/document"
for root, dirs, files in os.walk(dir_path):
for file in files:
print(os.path.join(root, file))
3. Vea töötlemiseamine
Võib tekkida vigu, kui kataloog ei eksisteeri või puuduvad juurdepääsuõigused. Seetõttu soovitatakse kasutadatry-except
plokki, et lisada erindite töötlemine.dir_path = "/invalid/path"
try:
files = os.listdir(dir_path)
print(files)
except FileNotFoundError:
print(f"{dir_path} ei leitud.")
4. Laiendi hankimine ja muutmine
Failinime hankimisel võib osutuda vajalikuks ka laiendi töötlemine。os.path.splitext()
kasutades on võimalik laiendi eraldada või muuta。4.1 os.path.splitext()
laiendi hankimine
os.path.splitext()
on funktsioon, mis tagastab failinime ja laiendi eraldatult。import os
file_path = "/user/home/document/file.txt"
file_name, file_ext = os.path.splitext(file_path)
print(file_name) # tulemus: "/user/home/document/file"
print(file_ext) # tulemus: ".txt"
4.2 Laiendi muutmine
Laiendi muutmisel lisatakse failinimele, mis on saadudos.path.splitext()
abil, uus laiend。new_file_path = file_name + ".jpg"
print(new_file_path) # tulemus: "/user/home/document/file.jpg"

5. pathlib
mooduli rakendused failinimede hankimisel
Alates Python 3.4-st on pathlib
moodul failiteedade käsitlemisel väga kasulik. pathlib
võimaldab failiteedadega objektorienteeritud viisil töötada, muutes selle kasutamise intuitiivsemaks.5.1 Path.iterdir()
kasutamine failinimede hankimiseks
pathlib.Path()
meetodi iterdir()
kasutamisel saab määratud kataloogi failide ja kaustade nimed hankida.from pathlib import Path
dir_path = Path("/user/home/document")
for item in dir_path.iterdir():
print(item.name)
5.2 Rekursiivne failide hankimine: rglob()
Kui soovite hankida failinimed rekursiivselt, kaasa arvatud alamkataloogid, kasutage meetodit rglob()
. seda saab kasutada ka os.walk()
alternatiivina.for file in dir_path.rglob("*"):
print(file)
6. Failinimede filtreerimine
Kui soovite hankida ainult failinimed, mis vastavad kindlatele tingimustele, saate filtreerida kasutadesglob
moodulit või pathlib
klassi glob()
meetodit.6.1 Filtreerimine laiendi alusel
Kindla laiendiga failide hankimiseks kasutage metamärki*
.from pathlib import Path
dir_path = Path("/user/home/document")
for file in dir_path.glob("*.txt"):
print(file)
See kood hangib ainult .txt
failid määratud kataloogist.7. Kokkuvõte
Pythoniga failinime hankimise meetodeid on palju, kuid on oluline valida sobiv lähenemine vastavalt kasutusotstarbele.os
mooduli põhilistest toimingutest kuni pathlib
täiustatud funktsioonideni, kui neid kombineerida, saab kaustas olevaid faile tõhusalt töödelda. Järgmine kord pakume teavet failide ümbernimetamise, liigutamise ja kustutamise kohta failitoimingute rakenduste osas.