web-gelistirme-sc.com

seek () işlevi

Lütfen kafamdaki kusura bakma ama python 'daki seek () işleviyle ilgili belgeleri okudum (kullanmanızın ardından) ve bana yardımcı olmasına rağmen, yaptıklarının asıl anlamı konusunda biraz kafam karıştı, Herhangi bir açıklama çok takdir edilmektedir, teşekkür ederim.

113
Gmenfan83

seek() ile ilgili olarak, endişelenecek çok fazla şey yok.

Her şeyden önce, açık bir dosya üzerinde çalışırken kullanışlıdır.

Sözdiziminin aşağıdaki gibi olduğuna dikkat etmek önemlidir:

fp.seek(offset, from_what)

fp, üzerinde çalıştığınız dosya işaretçisidir; offset kaç tane pozisyon taşıyacağınız anlamına gelir; from_what referans noktanızı tanımlar:

  • : referans noktanızın başlangıç olduğu anlamına gelir
  • 1: referans noktanızın geçerli dosya konumu olduğu anlamına gelir
  • 2: referans noktanızın dosyanın son olduğu anlamına gelir

belirtilmezse, from_what varsayılan olarak 0 olur.

Dosyaları yönetirken, üzerinde çalıştığınız dosyanın içinde daima bir konum olacağını asla unutmayın. Yeni açıldığında, bu konum dosyanın başlangıcıdır, ancak onunla çalıştığınız zaman ilerleyebilirsiniz.
seek bu açık dosya boyunca, seyahat ettiğiniz bir yol olarak walk kullanmanız gerektiğinde sizin için yararlı olacaktır.

206
Nicolás Ozimica

Bir dosyayı açtığınızda, sistem dosyanın başlangıcına işaret eder. Yaptığınız okuma veya yazma işlemleri baştan başlayacaktır. Seek () işlemi bu işaretçiyi dosyanın başka bir bölümüne taşır, böylece o yerde okuyabilir veya yazabilirsiniz.

Bu nedenle, dosyanın tamamını okumak ancak ilk 20 baytı atlamak istiyorsanız, dosyayı açın, okumaya başlamak istediğiniz yere gitmek için (20) 'yi arayın, ardından dosyayı okumaya devam edin.

Ya da her 10 baytı okumak istediğinizi söyleyin, arayan bir döngü yazabilirsiniz (9, 1) (geçerli konumlara göre 9 bayt ileri gider), bir bayt okuyan, tekrarlayan.

37
DGH

seek işlevi bekliyoruz bayt cinsinden bir ofset olur.

Ascii Dosya Örneği:

Bu nedenle, aşağıdaki içeriğe sahip bir metin dosyanız varsa:

simple.txt

abc

İlk karakterin üzerine atlamak için 1 byte atlayabilirsiniz:

fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc

İkili dosya örneği toplama genişliği:

fp = open('afile.png', 'rb')
fp.seek(16)
print 'width: {0}'.format(struct.unpack('>i', fp.read(4))[0])
print 'height: ', struct.unpack('>i', fp.read(4))[0]

Not:read'i aradığınızda, seek gibi davranan okuma kafasının konumunu değiştiriyorsunuz.

3
user1767754