Hedeflerim farklı olmasına rağmen 'u this post takip ederek alt sınıflara ayırmaya çalışıyorum. Bu veriyor benAlt sınıflama dosyası io.TextIOWrapper` alt sınıfına göre sınıflandırılıyor - ancak yapıcının sahip olduğu hangi imza var?
In [81]: f = MyTextIOFile("file.csv")
kullanarak yapıcı kullanarak bir dosyayı açmaya çalışıyorum ama
class MyTextIOFile(io.TextIOWrapper):
def read(self, *args):
cont = super().read(*args)
return cont.replace("\x00", "")
: Bu (: motivation NB) ile kapalı başlayarak aslında
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-90-343e18b2e32f> in <module>()
----> 1 f = MyTextIOFile("file.csv")
AttributeError: 'str' object has no attribute 'readable'
Ve io.TextIOWrapper
s yapıcısının bir dosya nesnesinden geçirilmesini beklediği görülür. Deneme ve hata yoluyla, bu dosya nesnesinin ikili modunda açılmasının gerekli olduğunu keşfettim. Ancak, herhangi bir yerde belge bulamıyorum ve belgesiz davranışın üzerine inşa etmek gibi hissetmiyorum (gerçekten de, bir adım ileride, benim nesneyi csv.reader
nesnesine iletmeye çalışırken sorunlara yol açıyor). Python 3'te bir dosya nesnesinin alt sınıfının doğru ve desteklenen yolu nedir?
Python 3.5.0 kullanıyorum.
Bunun yerine bileşimi kullanmayı düşünün; Dosyayı açmak ve yerine döndürülen nesneye bir referans kaydetmek için sınıfınızı 'open' kullanmalısınız. – chepner
@chepner Tam olarak ne demek istediğinizden emin değilim - "io.IOBase" ailesinden miras almayı kastediyor musunuz? Sonunda bunu 'csv.csvreader' dosyasına aktarmak istiyorum ve bu yüzden amacım tüm NUL'lerden arındırılmış olan dosyayı okumaktır (bkz. [Bu soru] (http://stackoverflow.com/a/4169762/974555)). – gerrit
Sağ; "csv.csvreader", yineleyici protokolünü uyguladığı sürece (yani, sonraki satırı almak için çağrılabilecek bir sonraki "yönteme sahip olduğu sürece) ne tür bir bakım aldığını umursamaz. – chepner