python 文件读取的问题
有如下代码我试了有一部分成功了有一部分失败了请各位大哥解释一下失败的原因:成功的实验>>>af=open('a.txt','w')>>>af.write('asd')>>...
有如下代码我试了有一部分成功了有一部分失败了
请各位大哥解释一下失败的原因:
成功的实验
>>>af=open('a.txt','w')
>>> af.write('asd')
>>> af.close()
>>> ad=open('a.txt','r')
>>> ad.read ()
'asd'
失败的实验1
>>> f=open("a.txt",'w+')
>>> f.write('ase')
>>> f.read()
\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00中间有3000多个\x00和少数其他东西\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
这好象没问题呀
失败的实验2
>>> af=open('a.txt','w')
>>> af.write('asd')
>>> af.close()
>>> af=open('a.txt','r')#这是我觉得af被关闭后没有从新打开的方法总觉得af变量浪费了所以做了这个实验这个实验与第一个成功的实验的区别就是打开文件的变量名不同
>>> af.read()
\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00中间有3000多个\x00和少数其他东西\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 展开
请各位大哥解释一下失败的原因:
成功的实验
>>>af=open('a.txt','w')
>>> af.write('asd')
>>> af.close()
>>> ad=open('a.txt','r')
>>> ad.read ()
'asd'
失败的实验1
>>> f=open("a.txt",'w+')
>>> f.write('ase')
>>> f.read()
\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00中间有3000多个\x00和少数其他东西\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
这好象没问题呀
失败的实验2
>>> af=open('a.txt','w')
>>> af.write('asd')
>>> af.close()
>>> af=open('a.txt','r')#这是我觉得af被关闭后没有从新打开的方法总觉得af变量浪费了所以做了这个实验这个实验与第一个成功的实验的区别就是打开文件的变量名不同
>>> af.read()
\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00中间有3000多个\x00和少数其他东西\x00\x186\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 展开
展开全部
首先,"失败实验2"是能够成功的。为什么你失败了呢?我用的2.5。
也就是说,创建后,用close()将数据写入,再使用同样的变量名读取是完全没有问题的。(因为已经重新定义了嘛!)
失败的实验1中,
f.write('ase') 后数据并没有被写入,在缓存区中。
然后f.read(),我个人理解为连缓存中的其他数据也读取了,或者破坏了缓存中的内容。可以看到,开头是要写入的内容‘asd’,后面是无意义的数据。
f.close()时,写入的已经是被修改后的缓存区内容了……也就是asd再加上一大串NULL等……
这个例子告诉我们……用W+时还没close前不要读取……哈哈。
恩~恩~
也就是说,创建后,用close()将数据写入,再使用同样的变量名读取是完全没有问题的。(因为已经重新定义了嘛!)
失败的实验1中,
f.write('ase') 后数据并没有被写入,在缓存区中。
然后f.read(),我个人理解为连缓存中的其他数据也读取了,或者破坏了缓存中的内容。可以看到,开头是要写入的内容‘asd’,后面是无意义的数据。
f.close()时,写入的已经是被修改后的缓存区内容了……也就是asd再加上一大串NULL等……
这个例子告诉我们……用W+时还没close前不要读取……哈哈。
恩~恩~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询