028 习题

0.下面只有一种方式不能打开文件,请问是哪一种,为什么?
f=open(‘E:/test.txt’,‘w’) A
f=open(‘E:\test.txt’,‘w’) B
f=open(‘E://test.txt’,‘w’) C
f=open(‘E:\test.txt’,‘w’) D

答:B不能打开文件

1.打开一个文件我们使用open函数,通过设置文件的打开模式,决定打开文件的具有哪些性质,请问默认的打开模式是什么呢?
答:'rt’模式,open()函数默认的打开模式是'rt',即可读、文本的模式打开。

2.请问>>>open(‘E:\test.bin’,’xb’)怎么样的模式打开呢?
答:以“可写入以及二进制模式”打开文件“E:\\Test.bin”

3.尽管python有所谓的垃圾回收机制,但对于打开了的文件,再不需要的时候我们仍需使用f.close将对象关闭,为什么呢?
答:python拥有垃圾收集机制,会对文件对象的引用计数将至0的时候自动关闭文件,所以在python编辑里,不会造成内存泄露的危险。但是python会缓存你写入的数据,如果中间断电,缓存的数据就不会写入文本了

4.如何将一个文件对象中的数据存放进列表中?
答:list(f)

5.如何迭代打印出文件对象的每一行数据?
答:直接使用for语句把文件对象迭代出来即可:

for each_line in f
 	print(each_line)

6. 文件对象的内置方法f.read([size=-1])作用是读取文件对象内容,size参数是可选的,那如果设置了size=10,例如f.read(10),将返回什么内容呢?

答:将返回从文件指针开始的连续10个字符。

7. 如何获得文件对象(f)当前文件指针的位置?

答:f.tell()

8. 还是视频中的那个演示文件(record.txt),请问为何f.seek(45, 0)不会出错,但f.seek(46)就出错了呢?

>>> f.seek(46)
46
>>> f.readline()
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    f.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xe3 in position 4: illegal multibyte sequence

答:因为使用f.seek()定位的文件指针是按字节为单位进行计算的,演示文件(record.txt)是以GBK进行编码的,按照规则,一个汉字需要占用两个字节,f.seek(45)的位置位于字符“小”的开始位置,因此可以正常打印,而f.seek(46)的位置刚好位于字符“小”的中间位置,因此按照GBK编码的形式无法将其解码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值