最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

python文件的高级应用

来源:博客园


(相关资料图)

可读、可写

  • r+t: 可读、可写
  • w+t: 可写、可读
  • a+t: 可追加、可读
## wtwith open("36w.txt", "wt", encoding="utf-8") as fw:    print(fw.readable())    print(fw.writable())FalseTrue# w+twith open("36w.txt", "w+t", encoding="utf-8") as fw:    print(fw.readable())    print(fw.writable())TrueTrue# r+twith open("36w.txt", "r+t", encoding="utf-8") as fr:    print(fr.readable())    print(fr.writable())TrueTrue

文件内指针移动

假设我们需要在文件内容中间的某一行增加内容,如果使用基础的r/w/a模式实现是非常困难的,因此我们需要对文件内的指针进行移动。

with open("36r.txt", "r+t", encoding="utf-8") as fr:    fr.readline()    fr.write("nick 真衰呀")  # 写在文件的最后一行

硬盘上从来没有修改一说,硬盘上只有覆盖,即新内容覆盖新内容。1.seek(offset,whence): offset代表文件指针的偏移量,偏移量的单位是字节个数

# seek()with open("36r.txt", "rb") as fr:    print(f"fr.seek(4, 0): {fr.seek(4, 0)}")     # 0相当于文件头开始;1相当于当前文件所在位置;2相当于文件末尾    # fr.seek(0,2)  # 切换到文件末尾fr.seek(4, 0): 3

2.tell(): 每次统计都是从文件开头到当前指针所在位置

# tell()with open("36r.txt", "rb") as fr:    fr.seek(4, 0)    print(f"fr.tell(): {fr.tell()}")fr.tell(): 4

3.read(n): 只有在模式下的read(n),n代表的是字符个数,除此之外,其他但凡涉及文件指针的都是字节个数

# read()with open("36r.txt", "rt", encoding="utf-8") as fr:    print(f"fr.read(3): {fr.read(3)}")#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441fr.read(3): sdf

4.truncate(n): truncate(n)是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate()要在r+或a或a+等模式下测试效果。它的参照物永远是文件头。并且truncate()不加参数,相当于清空文件。

# truncate()with open("36r.txt", "ab") as fr:    fr.truncate(2)     # 截断2个字节后的所有字符,如果3个字节一个字符,    # 只能截断2/3个字符,还会遗留1/3个字符,会造成乱码

关键词: 我们需要 遇到问题 学习交流