python中的seek问题

下面三段代码中的值怎么不一样呢?
(1)
myfile=open('filename.txt','w+')
myfile.write('My name is ella')
myfile.seek(10)
print myfile.readlines()
myfile.close()
#运行结果为 [' ella']
(2)
myfile=open('filename.txt','w')
myfile.write('My name is elle')
myfile.seek(10)
myfile.close()
myfile=open('filename.txt','r')
print myfile.readlines()
myfile.close()
#运行结果为:['My name is ella']
(3)
myfile=open('filename.txt','w')
myfile.seek(10)
myfile.write('My name is elle')
myfile.close()
myfile=open('filename.txt','r')
print myfile.readlines()
myfile.close()
#运行结果为['\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00My name is ella']
Udonotloveme 您好,不好意思,因为刚学习,所以还是没怎么明白,为什么同样是seek(10),第(1)段代码读到的是第11位以后的字符,但第(2)和(3)读到的还是全部字符呢?对于(1)我open了文件,还没有写东西,就seek(N),这里就会相当于有N个空格?对于(2)我执行了seek(N),才执行的read,读到的怎么是全部的字符呢,之前的seek没起作用?怎么不是从第11位开始读?而对于(3)之前seek(N)后面读的时候,之前的seek又起了作用的。麻烦回复细点哈,万分感谢!

蛊毒传说
浏览 688回答 3
3回答

慕盖茨4494581

seek是移动索引的函数,默认是从开始,即0模式的前两个好理解,最后一个也不难,打开文件的时候,文件时一片干净的缓冲区,所以充塞了null字符,就是\x00,你索引移动10格,自然是跳过了10个null字符,所以前面有10个\x00了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python