7.1 Əsas əməliyyatlar
Fayllarla işləməyi öyrəndiniz, indi isə bəzi direktoriyalarla iş edək. Bəzən bu fayllarla işləməyə bənzəyir, bəzən isə yox. Direktoriyaların özünəməxsus xüsusiyyətləri var. Direktoriyalarla işləmək üçün əsas funksiyalar os və shutil modul(l)arı tərəfindən təmin olunur.
Direktoriyalarla əsas əməliyyatlar:
Direktoriyanın yaradılması
Yeni direktoriyanın yaradılması üçün os.mkdir() funksiyasından istifadə olunur.
Nümunə:
import os
# Yeni direktoriyanın yaradılması
os.mkdir('new_directory')
print("Direktoriya 'new_directory' yaradıldı")
Bir neçə iç-içə direktoriyaların yaradılması
Bir neçə iç-içə direktoriyaların yaradılması üçün os.makedirs() funksiyasından istifadə olunur.
Nümunə:
import os
# Bir neçə iç-içə direktoriyaların yaradılması
os.makedirs('parent_directory/child_directory')
print("İç-içə direktoriyalar 'parent_directory/child_directory' yaradıldı")
Direktoriyanın silinməsi
Boş direktoriyanın silinməsi üçün os.rmdir() funksiyasından istifadə olunur. Direktoriyanı içindəkilərlə birlikdə silmək üçün isə shutil.rmtree() funksiyası istifadə olunur.
Nümunə:
import os
# Boş direktoriyanın silinməsi
os.rmdir('new_directory')
print("Direktoriya 'new_directory' silindi")
Direktoriyanı içindəkilərlə silmə nümunəsi:
import shutil
# Direktoriyanı içindəkilərlə silmək
shutil.rmtree('parent_directory')
print("Direktoriya 'parent_directory' və bütün məzmunu silindi.")
Vacibdir! Heç vaxt direktoriyanı bütün məzmunu ilə birlikdə silməyin. 10 dəfəlik bir cəhddə bir səhv olacaq proqramınıza sızacaq və siz diskinizdəki yarıya yaxın faylı sileceksiniz. Hər kəs belə səhvlərdən keçir. Heç vaxt bunu etməyin.
Direktoriyanı silmədən öncə onun mövcudluğunu os.path.exists() funksiyası ilə yoxlamaq tövsiyə olunur. Bu, mövcud olmayan direktoriyanı ya da səhv bir yolu silməkdən yaranan xətaların qarşısını ala bilər.
Nümunə:
import os
import shutil
# Direktoriyadan əvvəl mövcudluq yoxlanması
directory_path = 'parent_directory'
if os.path.exists(directory_path):
shutil.rmtree(directory_path)
print(f"Direktoriya '{directory_path}' və bütün məzmunu silindi.")
else:
print(f"Direktoriya '{directory_path}' mövcud deyil, silmək mümkün deyil.")
7.2 Qovluqların kopyalanması
Qovluğun yerini dəyişmək və ya adını dəyişmək
Qovluğun yerini dəyişmək və ya adını dəyişmək üçün os.rename() funksiyasından istifadə olunur.
import os
# Nümunə üçün qovluq yaradılması
os.mkdir('original_directory')
# Qovluğun adının dəyişdirilməsi
os.rename('original_directory', 'renamed_directory')
print("Qovluq 'original_directory' 'renamed_directory' olaraq dəyişdirildi")
Qovluğun kopyalanması
Qovluğun kopyalanması üçün shutil.copytree() funksiyasından istifadə olunur. Bu funksiya yalnız qovluğun məzmununu kopyalamır, eyni zamanda göstərilən təyinat yolunda yeni qovluq yaradır.
import os
import shutil
# Nümunə üçün qovluq yaradılması
os.mkdir('source_directory')
# Qovluğun kopyalanması
shutil.copytree('source_directory', 'destination_directory')
print("Qovluq 'source_directory' 'destination_directory' olaraq kopyalandı")
7.3 Cari direktoriya
Hər başladılan proqram üçün "cari iş direktoriya" anlayışı əlaqələndirilir. Adətən bu, proqramın başladıldığı və xidməti fayllarını axtardığı direktoriyadır. Məsələn, kataloq adı göstərilmədən verilən bütün fayllar cari direktoriyada axtarılacaq.
Cari iş direktoriyasını əldə etmək
Cari iş direktoriyasını əldə etmək üçün os.getcwd() funksiyası istifadə olunur.
import os
# Cari iş direktoriyasını əldə etmək
current_directory = os.getcwd()
print(f"Cari iş direktoriyası: {current_directory}")
Cari iş direktoriyasını dəyişmək
Cari iş direktoriyasını dəyişmək üçün os.chdir() funksiyası istifadə olunur.
import os
# Cari iş direktoriyasını dəyişmək
os.chdir('new_directory')
print(f"Cari iş direktoriyası dəyişdirildi: {os.getcwd()}")
Cari iş direktoriyasını dəyişmək fayllara verilən yolları təsir edə bilər, çünki onlar hazırki kataloqa nisbətən göstərilir. Direktoriyanı dəyişərkən ehtiyatlı olun, çünki proqram faylı ilkin direktoriyada gözlədiyi halda səhvlərə səbəb ola bilər.
Direktoriyanın mövcudluğunu yoxlamaq
Direktoriyanın mövcudluğunu yoxlamaq üçün os.path.exists() funksiyası istifadə olunur.
import os
# Direktoriyanın mövcudluğunu yoxlamaq
directory_path = 'new_directory'
if os.path.exists(directory_path):
print(f"'{directory_path}' direktoriyası mövcuddur")
else:
print(f"'{directory_path}' direktoriyası mövcud deyil")
Direktoriyanın mütləq yolunu əldə etmək
Mütləq yolu əldə etmək üçün os.path.abspath() funksiyası istifadə olunur.
import os
# Direktoriyanın mütləq yolunu əldə etmək
relative_path = 'example_directory'
absolute_path = os.path.abspath(relative_path)
print(f"Mütləq yol: {absolute_path}")
7.4 Direktoriyanın Məzmunu
Fayl və direktoriyaların siyahısını əldə etmək
Göstərilən direktoriyada fayl və direktoriyaların siyahısını əldə etmək üçün os.listdir() funksiyasından istifadə olunur.
import os
# Cari direktoriyada fayl və direktoriyaların siyahısını əldə etmək
contents = os.listdir('.')
print(f"Cari direktoriyanın məzmunu: {contents}")
Fayl və direktoriyalarla sadəcə yol (path) siyahıları kimi yox, daha mürəkkəb obyektlər kimi işləyə bilərsiniz.
Direktoriyanın məzmunu haqqında məlumatı əldə etmək üçün os.scandir() istifadə etmək
os.scandir() funksiyası iterator qaytarır, hansı ki, direktoriyadakı hər bir qeyd üçün DirEntry obyektlərini verir. Bu obyektlər fayl və direktoriyalar haqqında məlumat saxlayır və onları istifadə etmək os.listdir() ilə müqayisədə daha effektiv edir, xüsusilə böyük kataloqlar üçün.
import os
# Direktoriyanın məzmunu haqqında məlumatı əldə etmək
with os.scandir('.') as entries:
for entry in entries:
print(f"Adı: {entry.name}, Bu direktoriyadır: {entry.is_dir()}, Bu fayldır: {entry.is_file()}")
GO TO FULL VERSION