2016-12-30 19 views
5

Python belgelerinden (here) örnek kodu kullandığımda bir AttributeError yükseltildi. şöyle bir örnek kod şudur:yükseltir AttributeError: __exit__

with os.scandir(path) as it: 
    for entry in it: 
     if not entry.name.startswith('.') and entry.is_file(): 
      print(entry.name) 

sonuç bir AttributeError geçerli: bir değişkene os.scandir() atama çalışıyor

D:\Programming>test.py 
Traceback (most recent call last): 
    File "D:\Programming\test.py", line 3, in <module> 
    with os.scandir() as it: 
AttributeError: __exit__ 

rağmen. Birisi bana neyi kaçırdığımı söyleyebilir mi?

cevap

4

bağlam yöneticisi desteği bir bağlam yöneticisi değil (ve Python ilk __exit__ yüklenmeye çalışıyor) beri Gördüğünüz hatayı yükseltecek önceki sürümleri ile kullanmaya çalışınca, Python 3.6yılında eklenmiştir.

This is stated in its documentationscandir için (sağ altında kod gördüğünü pasajı): (Vurgu madeni)

Python 3.6 için güncelleme veya ya

New in version 3.6: Added support for the context manager protocol and the close() method. [...]

Yapabilirsiniz bunu yapamıyorsanız onu içerik yöneticisi olarak kullanma.

2

docs Muhtemelen eski bir Python sürümünü çalıştıran

New in version 3.6: Added support for the context manager protocol

söylüyorlar.

+0

İşte bu kadar. Hala 3.5.2.3.6'da çalışıyordum, teşekkürler! –

İlgili konular