Şu anda Python 3 yerleşik bir istisna gerektiren bir projede Python 2 kullanıyorum: FileNotFoundError
. Nasıl yaparım?FileNotFoundError'ı Python 3'ten nasıl alabilirim?
cevap
Sen elbette istediğiniz herhangi istisnalar tanımlayabilirsiniz.
Ama size bir yararı olacak değiliz. FileNotFoundError
'un tüm noktası, bir dosyada bulunamadı hatasıyla çalışan Python işleminin bu özel durumu artırmasıdır. Sadece kendi özel durumunuzu tanımlamak bunu doğru yapmayacaktır. Tek yapmanız gereken, uygun bir errno
değerine sahip bir OSError
(veya 2.x sürümüne bağlı olarak IOError
). Bir özel FileNotFoundError
'u işlemeye çalışırsanız, işleyiciniz hiçbir zaman aranmayacaktır.
Ee, ne gerçekten istediğiniz (örneğin) geçerli:
try:
f = open(path)
except OSError as e:
if e.errno == errno.ENOENT:
# do your FileNotFoundError code here
else:
raise
[doğru istisna IOError] gibi görünüyor (https://docs.python.org/2/library/exceptions.html#exceptions.IOError). – Mansour
@Mansour: 2.6-2.7 için, ikisi oldukça temiz bölünmüş durumda. Eski sürümler için (özellikle de CPython kullanmıyorsanız), farklı bir hikaye (ve soket bağlantı hataları gibi bazı şeyler _neither_ idi). Bu nedenle "2.x sürümüne bağlı". Güvende olmak için, her zaman her ikisini de yakalayabilir veya ortak alt sınıf olan EnvironmentError'a (1,5'e geri dönmeniz gerekmedikçe) sahip olabilirsiniz. – abarnert
Örneği okudum, metni tamamen görmezden geliyorum! – Mansour
Sadece kendiniz FileNotFoundError
istisna oluşturabilir:
class FileNotFoundError(OSError):
pass
Bu yeni durum sınıfı sadece Python 3.x gibi OSError
devraldığı İşte
yerine IOError
kullanabilirsiniz:
Yükseltilmiş zaman böyle bir baskı ifadesi olarak bir G/Ç işlemi (Yerleşik open() işlevi veya bir dosya nesnesinin yöntemi), G/Ç ile ilgili bir nedenle , örneğin “dosya bulunamadı” veya “disk dolu” için başarısız olur.Bu sınıf EnvironmentError türetilmiştir. İstisna örneği öznitelikleri hakkında daha fazla bilgi için yukarıdaki tartışmaya bakın. bir temel sınıf olarak kullanmak için değiştirildi socket.error:
sürüm 2.6 değiştirildi.
Biraz daha bağlam sağlayabilir misiniz? Genellikle, bir cümle cevapları SO üzerinde yeterli değildir. – sadmicrowave
Belgelere bir bağlantı veya alıntı, harika olurdu. ^^ Bu çok daha kapsamlı +1 – sadmicrowave
Alıntı ekledim. ve "dosya bulunamadı" parçasını vurguladı :-) –
- 1. Python 2.6'da nasıl argparse alabilirim?
- 2. Django/Python tam istek başlığını nasıl alabilirim?
- 3. Python, ben nasıl alabilirim gif çerçeveleri
- 4. Python 2.6'yı Kullanma Ayın gününü tamsayı olarak nasıl alabilirim?
- 5. Python: Ait oldukları grubun maksimum değerine sahip Satırları nasıl alabilirim?
- 6. Python requests.get "application/json" ı bir HTML sayfasından nasıl alabilirim?
- 7. Bir python modül işlevini dinamik olarak nasıl alabilirim?
- 8. nasıl Python için GAE üzerinde Modeli() içinde giriş key_name'ı alabilirim?
- 9. Python: Bir nesnenin niteliğini getattr ile nasıl alabilirim?
- 10. Listeden nasıl bir değer alabilirim? Python ve Selenyum
- 11. Python ile Azure İşlevi Başlattıran inputBlob Adını Nasıl Alabilirim
- 12. StopIteration yerine None döndürmek için bir Python jeneratörü nasıl alabilirim?
- 13. Virtualenv'i Python çalıştırılabilirlerini Entegre Python Dağılımı'nı kullanarak doğru sys.path ile üretmek için nasıl alabilirim?
- 14. Simge adının tam dosya yolunu nasıl alabilirim?
- 15. Python3'teki "eski" zip() öğesini nasıl alabilirim?
- 16. web url'sini nasıl alabilirim
- 17. MKAnnotationView coords nasıl alabilirim?
- 18. Uzantımın kimliğimi nasıl alabilirim?
- 19. Monitör bilgilerini nasıl alabilirim?
- 20. Önceki rotamı nasıl alabilirim?
- 21. phoenix.gen.html'yi nasıl geri alabilirim?
- 22. İşlevin türevini nasıl alabilirim?
- 23. Şerit bilgilerini nasıl alabilirim?
- 24. TextView'de dili nasıl alabilirim?
- 25. Dün NSDate'i nasıl alabilirim?
- 26. İsteğin URL'sini nasıl alabilirim?
- 27. ŞablonUrl'yi $ modalInstance'dan nasıl alabilirim?
- 28. Görünümden Nasıl Parça Alabilirim?
- 29. EditText değişikliğini nasıl alabilirim?
- 30. System.Windows.Controls.Primitive.PopupRoot türünü nasıl alabilirim?
Bunu yapamaz. Neden sadece istisnayı kendiniz tanımlamıyorsunuz? –
'try' sonra' hariç: pass' – Hackaholic
@Hackaholic Err ... no. Bunu neden yapmak istesin ki? –