python——文件操作相关(重点)

17.file 操作(重点)

  • Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

file = open("文件地址", "rwa+[打开方法]", encoding="编码格式")
打开方法解释
r只读
w只写 [会清空原先的内容]
r+读写
w+写读[会清空原先的内容]
a追加写在原来文件末尾追加内容
a+在追加的基础上加入读取的权限
b二进制
  • 下列是案例:
# file = open("文件地址", "rwa+[打开方法]", encoding="编码格式")

file = open("test.txt", "w", encoding="gbk")  # 打开一个文件

print(file.writable())  # 判断是否有写入的权限
print(file.readable())  # 判断有没有读取的权限
i = file.write("这是一行测试文字")  # 写入内容,会返回一个写入的长度
print(i)

file.writelines("\n再写一行")  # 写入一行内容

file.close()  # 关闭文件

file = open("test.txt", "r", encoding="gbk")

print(file.readable())
buff = file.read(10)
while buff:
    print(buff, end="")
    buff = file.read(10)

file.close() # 关闭文件

常用写法

  • 通过 with 关键字 ,配合as 关键字一起使用
with open("文件名","打开方式",encoding=???) as f:
    文件操作
  • 这种写法的好处,不需要关闭文件,代码块结束时,文件会自动关闭,防止发生错误,增强程序的健壮性。

  • 演示:

with open("test.txt", "r+", encoding="gbk") as f:
    print(f.readable())
    print(f.writable())

    f.write("this is a test")  # 会从文件头加入,如果已存在则不会再加入,一般不会混合使用,或者先读取再进行写入
    buff = f.read()
    while buff:
        print(buff)
        buff = f.read()

file 对象的方法

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号方法及描述
1file.close() 关闭文件。关闭后文件不能再进行读写操作。
2file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
3file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
4file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
5file.next() **Python 3 中的 File 对象不支持 next() 方法。**返回文件下一行。
6file.read([size])从文件读取指定的字节数,如果未给定或为负则读取所有。
7file.readline([size])读取整行,包括 “\n” 字符。
8file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
9file.seek(offset[, whence]) 移动文件读取指针到指定位置
10file.tell() 返回文件当前位置。
11file.truncate([size])从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。
12file.write(str) 将字符串写入文件,返回的是写入的字符长度。
13file.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pointer-faker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值