CodeGym /Kurslar /Python SELF AZ /Direktoriyalar ilə iş

Direktoriyalar ilə iş

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

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 osshutil 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()}")
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION