鱼C论坛

 找回密码
 立即注册
查看: 2326|回复: 2

[学习笔记] python文件指针的移动

[复制链接]
发表于 2020-2-21 23:14:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 233倔强不秃 于 2020-2-22 00:28 编辑

# 文件内指针的移动

#大前提:文件内指针的移动是Bytes为单位的,唯独t模式下的read读取内容个数是以字符为单位

# f.seek(指针移动的字节数,模式控制): 控制文件指针的移动
# 模式控制:(0,1,2)
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
# 强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用

#f.tell()查看文件指针当前距离文件开头的位置

# ---------------------------------------
# 文件修改
# 须知一:
# 硬盘空间无法修改,硬盘中的数据更新都是用新的内容覆盖旧的内容
# 内存控制可以修改
# with open('a.txt','r+t',encoding='utf-8') as f:
#     f.seek(4,0)
#     print(f.tell())
#     f.write('我擦嘞')

# 须知二:
# 文件对应的是硬盘空间,硬盘不能修改应为文件本质也不能修改,
# 我们看到文件的内容可以修改,是如何实现的呢?
# 大的的思路:将硬盘中文件内容读入内存,然后在内存中修改完毕后再覆盖回硬盘
# 具体的实现方式分为两种:
# 1. 将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存

# 2. 以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份





转载于:https://www.cnblogs.com/du-jun/p/9682631.html

2.seek方法的讲解
seek第一个参数是偏移量:>0,代表向右移动,<0,代表向左移动
seek第二个参数是:
0
移动指针到文件开头
1
代表指针移动从当前指针位置起算,移动的跨度和方向由第一个参数来决定,负值向左,正值向右。
2
移动指针到末尾








想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 23:42:32 | 显示全部楼层
seek第二个参数是:
0
移动指针到文件开头
1
不移动指针

2
移动指针到末尾

        被强调的那一条是错误的,第 2 个参数为 1 的时候,代表指针移动从当前指针位置起算,移动的跨度和方向由第一个参数来决定,负值向左,正值向右。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-22 00:26:56 | 显示全部楼层
jackz007 发表于 2020-2-21 23:42
seek第二个参数是:
0
移动指针到文件开头

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 11:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表