心蓝的博客 心蓝的博客
首页
  • 零基础

    • python零基础入门
  • 专项

    • 正则表达式
  • web框架

    • django框架
    • drf
技术
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

心蓝

人生苦短,我用python
首页
  • 零基础

    • python零基础入门
  • 专项

    • 正则表达式
  • web框架

    • django框架
    • drf
技术
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • 编程基础

  • python开发环境搭建

  • 基本数据类型

  • 程序流程控制

  • 函数与代码复用

  • 面向对象

  • 模块和包

  • 文件IO操作

    • 文件概述
    • 字符编码
    • 字节类型
    • python读取文件
    • python写文件
    • 文件指针
      • read方法
      • tell方法
      • seek方法
  • python零基础入门
  • 文件IO操作
心蓝
2022-12-23
目录

文件指针

# 文件指针

open函数返回的文件对象使用文件指针来记录当前在文件中的位置。

# read方法

在读模式下,使用文件对象的read方法可以读取文件的内容。

它接受一个整数参数表示读取内容的大小,文本模式下表示字符数量。

with open('test.txt', 'r', encoding='utf-8') as f:
    content = f.read(2) # 读取两个字符
    print(content)
1
2
3

输出:

锄禾
1

二进制模式下表示字节大小。

with open('test.txt', 'rb', encoding='utf-8') as f:
    content = f.read(2) # 读取两个字节
    print(content)
1
2
3

输出:

b'\xe9\x94'
1

如果省略,会读取文件的所有内容,大文件时慎用。

# tell方法

文件对象的tell方法返回整数,表示文件指针距离文件开头的字节数。

r模式打开文件后文件指针指向文件开头,执行read操作之后,根据读取的数据大小指针移动到对应的位置。

with open('test.txt', 'r', encoding='utf-8') as f:
    print(f.tell())
    content = f.read(2)		# 两个字符
    print(content)
    print(f.tell())			# utf-8一个字符3个字节,所以2个字符6个字节
1
2
3
4
5

输出:

0
锄禾
6
1
2
3

a模式打开文件后文件指针指向文件末尾。

with open('test.txt', 'a', encoding='utf-8') as f:
    print(f.tell())
1
2

输出:

243
1

# seek方法

通过文件对象的seek方法可以移动文件句柄

seek方法接收两个参数:

  • offset 表示偏移指针的字节数
  • whence 表示偏移参考,默认为0
    • 0 表示偏移参考文件的开头,offset必须是>=0的整数
    • 1 表示偏移参考当前位置,offset可以是负数
    • 2 表示偏移参考文件的结尾,offset一般是负数

注意文本模式下只允许从文件的开头进行偏移,也即只支持whence=0

with open('test.txt', 'r', encoding='utf-8') as f:
    print(f.read(2))
    # 跳转到文件开头
    f.seek(0)
    # 再读取第一个字
    print(f.read(1))
1
2
3
4
5
6

输出:

锄禾
锄
1
2
with open('test.txt', 'rb') as f:
    # 读取文件最后的10字节
    f.seek(-10,2)
    print(f.read())
1
2
3
4

输出:

b'\xe5\x8f\x88\xe7\x94\x9f\xef\xbc\x81\n'
1

本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。

上次更新: 2022/12/23, 19:09:35
python写文件

← python写文件

最近更新
01
requests让接口测试如此简单 原创
03-31
02
最简明的python正则教程
03-30
03
pycharm激活码
12-30
更多文章>
Theme by Vdoing | Copyright © 2019-2025 心蓝
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式