0
点赞
收藏
分享

微信扫一扫

python基础8(buffering:缓冲区,encoding,文本操作,写入,文件指针,with关键字,调试 debug)

北邮郭大宝 2022-01-07 阅读 13

buffering:缓冲区在这里插入图片描述

  • buffering= -1 t和b都是io.DEFAULT_BUFFER_SIZE
  • buffering=0 二进制模式 关闭缓冲区,文本模式不支持
  • buffering=1 文本模式行缓冲,遇到换行符才flush
  • buffering>1 二进制模式表示缓冲大小。缓冲区的值可以超过 io.DEFAULT_BUFFER_SIZE,直到设定的值超出后才把缓冲区flush,文本模式,是io.DEFAULT_BUFFER_SIZE字节,flush完后把当前字符串也写入磁盘
import time
f = open('data.txt', 'w+', buffering=1, encoding="UTF-8")

buffering = 1
f.write("第一行")
f.flush()
    print("等待2秒")
time.sleep(2)
f.write("\n第二行")

buffering > 1
for i in range(51):
    for i in range(50):
    f.write("a\n".encode())
print("等待3秒")
time.sleep(3)

f.close()

encoding:设置字符编码,仅文本模式使用

    f = open("data.txt","w",encoding="gbk")
    f.write("我是谁")
    print(f.read())
    f.close()

文本操作

读取

    file.read(字符个数/字节个数)  读取文件中的数据,如果是文本模式则是字符个数,如果是二进制则是字节个数
    file.readline()  读取一行
    file.readlines()  读取多行以列表形式返回(带换行符)
    file.read().splitlines() 读取多行以列表形式返回(不带换行符)
    f = open("data.txt","r",encoding="gbk")
    print(f.read(2))
    f.close()

写入

    file.write(字符串)
    file.writelines(序列) 把序列中的字符串元素写入文件
    f = open("data.txt","w")
    f.write([1,2,3])
    f.writelines(["A\n","B\n","c"])
    f.close()

文件指针

    f.seek(offset(移动多少位),whence(从哪开始移动))
    有前界,没有后界
    f.tell() 返回当前指针位置
    whence:
           0 文件指针在开头
           1 当前指针  文本模式不支持
           2 文件指针在结尾  文本模式不支持
    f = open("data.txt","r")
    print(f.read(1))  A
    f.seek(0,0)
    pritn(f.read(1))  B
    f.close()
  • f.write(string) 将 string 写入到文件中, 然后返回写入的字符数,如果要写入一些不是字符串的东西, 那么将需要先进行转换
  • file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
  • file.flush() #刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入.
  • f.seek(offset[,whence])移动文件指针位置.offest偏移多少字节,whence从哪里开始向后seek可以越界,越界返回空字符;但是向前seek不能越界,否则抛异常
  • file.tell()返回文件当前位置

with 关键字 上下文管理器

    with open("data.txt","r",encoding="UTF-8") as f:
        print(f.read(3))
    会自动关闭文本
  • 当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短

调试 debug

    第一步:打断点 程序在哪里暂停
    第二部:点击Debug进行调试 
    F8 下一步   F9 跳到下一个断点   F7 进入到详细代码
举报

相关推荐

0 条评论