Python izni reddedildi

Python işlevleri ve meth

Python, yalnızca bir yorumlayıcı gerekli izinlere sahipse dosyaları açabilir, okuyabilir ve dosyalara yazabilir. Python'un izinlerinin olmadığı bir dosyayı açmaya, okumaya veya bir dosyaya yazmaya çalışırsanız, PermissionError: [errno 13] izin reddedildi hatasıyla karşılaşırsınız.

Bu kılavuzda, bu hatanın ne anlama geldiğini ve neden ortaya çıktığını tartışıyoruz. Bu hatayı tam olarak nasıl çözeceğinizi öğrenebilmeniz için bir örnek üzerinden gideceğiz.




PermissionError: [errno 13] izin reddedildi

Bilgisayarlar, dosyaların bütünlüğünü korumak için dosya izinlerini kullanır. . Bazı dosyalar varsayılan olarak kısıtlı erişime sahiptir. Bir dosyanın erişim izinlerini istediğiniz zaman değiştirebilirsiniz.

Diyelim ki önemli bir program üzerinde çalışıyorsunuz. Bu programın yalnızca sizin tarafınızdan okunabilmesini isteyebilirsiniz. Bunu başarmak için, “okuma” programınızdaki tüm dosya ve klasörlerdeki izinler. Bu, programınıza erişimi sınırlar.

Bir Python programından erişmeye çalıştığınız herhangi bir dosya, dosyayı çalıştıran kullanıcı veya grup tarafından okunabilir olmalıdır.

Örneğin, bir web sunucusu işleminden bir Python komut dosyası çalıştırıyorsanız, web sunucusunun sahibi olan kullanıcının kodunuzda referans verdiğiniz tüm dosyalara erişimi olduğundan emin olmanız gerekir.




Örnek Senaryo

Bir dosyadan NFL puanlarının listesini bir programa okuyan bir program oluşturacağız.

Adında bir dosyamız var. Aşağıdakileri içeren afc_east.csv:

Katılımcıların %81'i, bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda kendilerini daha güvende hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleşin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan az zaman harcadı.

Dosyamız bir CSV'dir. Python csv modülünü kodumuza aktaracağız, böylece dosyayla çalışabiliriz:

import csv

Sonra, Python programımızda dosyamızı açalım. Bunu csv.reader() ifadesini kullanarak yapabiliriz:

file olarak open("afc_east.csv", "r") ile: okuyucu = csv.reader(file) for r in Reader: print(r)

Bu kod açılacaktır okuma modunda afc_east.csv adlı dosya. Ardından, CSV okuyucusu dosyayı yorumlayacaktır. CSV okuyucu, üzerinde yineleyebileceğimiz bir değerler listesi döndürür. Daha sonra bu değerlerin her birini bir döngü için ve bir print() deyimi kullanarak konsola yazdırırız, böylece dosyamızın içeriği satır satır.


Çalışıp çalışmadığını görmek için programımızı çalıştıralım:

İzleme (en son çağrı en son): Dosya olarak open("afc_east.csv", "r") ile 'de "test.py" dosyası, satır 3: PermissionError: [Errno 13] İzin reddedildi: 'afc_east.csv'

Kodumuz bir hata döndürüyor.




Çözüm

Bir PermissionError şunu gösteriyor Python'un bir dosyaya erişmek için doğru izinlere sahip olmadığı.

Dosyamızın izinlerini kontrol edelim. Bunu ls -la komutu:

afc_east.csv dosyasının root dizinine ait olduğunu görebiliriz. kullanıcı:

-rw-rw-rw- 1 kök personel 46 Eki 5 0 7:01 afc_east.csv

Python'u kök olarak çalıştırmadığımız için bu bir sorun. Bu, Python'un dosyamızı okuyamayacağı anlamına gelir. Bu hatayı düzeltmek için, chown komutunu kullanarak dosyamızın sahiplik izinlerini değiştirmemiz gerekiyor:

chown james:admin afc_east.csv

Bu komut, “james” kullanıcı ve “admin” 

Alternatif olarak, chmod komutunu kullanarak dosyanın izinlerini değiştirebiliriz:

chmod 755 afc_east.csv

Bu komut dosyamızı herkes tarafından okunabilir ve çalıştırılabilir hale getirir. Dosya yalnızca sahibi tarafından yazılabilir. Python betiğimizi tekrar çalıştırmayı deneyelim:

['Bills', '4' , '0'] ['Vatanseverler', '2', '1'] ['Yunuslar', '1', '3'] ['Jet', '0', '4']

Kodumuz, dosyamızdaki tüm puanları başarıyla yazdırır.




Sonuç

PermissionError: [errno 13] izin reddedildi hatası gerekli izinlere sahip olmadan Python'dan bir dosyaya erişmeye çalıştığınızda oluşur.

Bu hatayı düzeltmek için chmod veya chown komutunu kullanarak dosyanın izinlerini doğru kullanıcı ve /veya grup dosyaya erişebilir. Artık bu hatayı bir profesyonel gibi çözmek için ihtiyacınız olan becerilere sahipsiniz!





Python izni reddedildi: StackOverflow Questions

Tutorials