ขอแก้ตัวในความสับสนของฉันที่นี่ แต่ฉันได้อ่านเอกสารเกี่ยวกับฟังก์ชั่นการค้นหา () ใน python (หลังจากที่ต้องใช้งาน) และแม้ว่ามันจะช่วยฉันได้ แต่ฉันก็ยังสับสนเล็กน้อยเกี่ยวกับความหมายที่แท้จริงของสิ่งที่ทำ แต่คำอธิบายใด ๆ ก็มีมาก ชื่นชมขอบคุณ
ขอแก้ตัวในความสับสนของฉันที่นี่ แต่ฉันได้อ่านเอกสารเกี่ยวกับฟังก์ชั่นการค้นหา () ใน python (หลังจากที่ต้องใช้งาน) และแม้ว่ามันจะช่วยฉันได้ แต่ฉันก็ยังสับสนเล็กน้อยเกี่ยวกับความหมายที่แท้จริงของสิ่งที่ทำ แต่คำอธิบายใด ๆ ก็มีมาก ชื่นชมขอบคุณ
คำตอบ:
เกี่ยวกับ seek()นี้ไม่ต้องกังวลมากเกินไป
ก่อนอื่นมันมีประโยชน์เมื่อใช้งานกับไฟล์ที่เปิดอยู่
สิ่งสำคัญที่ต้องทราบว่าไวยากรณ์มีดังนี้:
fp.seek(offset, from_what)ที่fpเป็นตัวชี้ไฟล์ที่คุณกำลังทำงานกับ; offsetหมายถึงจำนวนตำแหน่งที่คุณจะย้าย from_whatกำหนดจุดอ้างอิงของคุณ:
หากละเว้นfrom_whatค่าเริ่มต้นคือ 0
อย่าลืมว่าเมื่อจัดการไฟล์จะมีตำแหน่งอยู่ในไฟล์ที่คุณกำลังทำงานอยู่เสมอ เมื่อเพิ่งเปิดตำแหน่งนั้นจะเป็นจุดเริ่มต้นของไฟล์ แต่เมื่อคุณทำงานกับมันคุณอาจก้าวไปข้างหน้า 
seekจะเป็นประโยชน์กับคุณเมื่อคุณต้องใช้walkไฟล์ที่เปิดอยู่นั้นเช่นเดียวกับเส้นทางที่คุณกำลังเดินทางไป
เมื่อคุณเปิดไฟล์ระบบจะชี้ไปที่จุดเริ่มต้นของไฟล์ การอ่านหรือเขียนใด ๆ ที่คุณทำจะเกิดขึ้นตั้งแต่เริ่มต้น การseek()ดำเนินการจะย้ายตัวชี้นั้นไปยังส่วนอื่นของไฟล์เพื่อให้คุณสามารถอ่านหรือเขียนในตำแหน่งนั้นได้
ดังนั้นหากคุณต้องการอ่านทั้งไฟล์ แต่ข้าม 20 ไบต์แรกให้เปิดไฟล์seek(20)เพื่อย้ายไปยังตำแหน่งที่คุณต้องการเริ่มอ่านจากนั้นอ่านไฟล์ต่อ
หรือบอกว่าคุณต้องการอ่านทุกๆ 10 ไบต์คุณสามารถเขียนลูปที่ทำseek(9, 1)(เลื่อนไปข้างหน้า 9 ไบต์เทียบกับตำแหน่งปัจจุบัน) read(1)(อ่านทีละไบต์) ทำซ้ำ
seekฟังก์ชั่นคาดหวังฯชดเชยไบต์
ดังนั้นหากคุณมีไฟล์ข้อความที่มีเนื้อหาต่อไปนี้:
simple.txt
abcคุณสามารถข้าม1 ไบต์เพื่อข้ามอักขระตัวแรกดังต่อไปนี้:
fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bcfp = 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]หมายเหตุ:เมื่อคุณโทรหาคุณมีการเปลี่ยนแปลงตำแหน่งของหัวอ่านซึ่งการกระทำเช่น
readseek
สำหรับสตริงอย่าลืมใช้ WHENCE: ใช้ f.seek (0) เพื่อวางตำแหน่งที่จุดเริ่มต้นของไฟล์และ f.seek (len (f) +1) เพื่อวางตำแหน่งที่ท้ายไฟล์ ใช้เปิด (ไฟล์ "r +") เพื่ออ่าน / เขียนที่ใดก็ได้ในไฟล์ หากคุณใช้ "a +" คุณจะสามารถเขียน (ต่อท้าย) ที่ส่วนท้ายของไฟล์ได้เท่านั้นไม่ว่าคุณจะวางเคอร์เซอร์ไว้ที่ใดก็ตาม
os.SEEK_SET,os.SEEK_CURและos.SEEK_ENDแทนหมายเลขมายากล0,1และ2ตามลำดับ