Python 2'de, dosya verileri okunurken çözülmedi. Python 3. için devre dışıdır neden
import io
file.buffer.seek(-3, 2)
file = io.TextIOWrapper(
file.buffer, encoding=file.encoding, errors=file.errors,
newline=file.newlines)
bilgileri io.TextIOWrapper()
object'a taşıma. Bu kod çözmenin UTF-16, UTF-32, UTF-8 ve diğer çoklu bayt kodekleri için kırılabileceğini göz önünde bulundurun.
Demo:
with open(somefile) as file:
# ...
file = textio_seek(file, -2, 3)
# ...
bir bağlam yöneticisi olarak dosya nesnesini kullanarak: Bir fayda fonksiyonuna bu sarabilirdiniz
>>> import io
>>> with open('demo.txt', 'w') as out:
... out.write('Demonstration\nfor seeking from the end')
...
38
>>> with open('demo.txt') as inf:
... print(inf.readline())
... inf.buffer.seek(-3, 2)
... inf = io.TextIOWrapper(inf.buffer)
... print(inf.readline())
...
Demonstration
35
end
: olarak
import io
def textio_seek(fobj, amount, whence=0):
fobj.buffer.seek(amount, whence)
return io.TextIOWrapper(
fobj.buffer, encoding=fobj.encoding, errors=fobj.errors,
newline=fobj.newlines)
ve bu kullanmak sadece, orijinal dosya nesnesiyle birlikte çalışır. ence hala orijinal dosya tampon nesnesine eklenir ve bu nedenle dosyayı kapatmak için hala kullanılabilir.
Tek baytlı kodlamalar için verileri her zaman el ile deşifre edebilirsiniz. –
https://docs.python.org/3.1/tutorial/inputoutput.html python 3.1'i kullanmaya devam ediyorsanız, arama hala kullanılabilir –
@IsuruMadusanka: seek tüm Python 3 sürümlerinde mevcuttur. Mevcut olmayan ** sondan itibaren göreceli olarak ** arıyor. 3.1 istisna değildir. –