小甲鱼28课文件:因为懂你,总结反思

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

python文件的读取支持斜线/和反斜线\,但是由于斜线和/n,/t等有关,所以斜线必须为双斜线。所以b错误
因此这也提醒自己读取文件尽量使用反斜线

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

2. 请问 >>> open(’ E: \Test.bin’ , ’ xb’ ) 是以什么样的模式打开文件的?
可读二进制打开,且文件存在会报错

3.尽管Python有所谓的“垃圾回收机制”,但对于打开了的文件,在不需要用到的时候我们仍然使用f. close()将文件对象“关闭”,这是为什么呢?
答:Python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件,所以在Python编程里,如果忘记关闭文件并不会带来什么危险。
但并不是说就可以不要关闭文件,如果你对文件进行了写入操作,那么你应该在完成写入之后进行关闭文件。因为Python可能会缓存你写入文件中的数据,如果这中间断电了神马的,那些缓存的数据根本就不会写入到文件中。所以,为了安全起见,要养成使用完文件后立刻关闭的优雅习惯。

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

f.seek(0, 0)
for each_line in f:
    print(each_line)

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

注意,根据指针来,如果指针在末尾则是打印‘’空,不然读取10个字符,中文俩,其他1

8. 还是视频中的那个演示文件(record. txt),请问为何f. seek(45, 0)不会出错,但f. seek(46)就出错了呢?
中文是两个字符,若指针指向一个中文第二个字符,就会报错

1. 编写代码,将上一题中的文件(OpenMe.mp3)保存为新文件(OpenMe. txt)

# 第一种方法:
f1 = open('D:\Python\Python3\OpenMe.mp3')
f2 = open('D:\Python\Python3\OpenMe.txt','x')
for each_line in f1:
    f2.write(each_line)
f1.close()
f2.close()

#第二种方法
f1 = open('D:\Python\Python3\OpenMe.mp3')
f2 = open('D:\Python\Python3\OpenMe2.txt','x')
f2.write(f1.read())
f1.close()
f2.close() 

作者:无罪的坏人
链接:https://www.jianshu.com/p/9102f115a461
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值