文件操作02

seek()

seek(n)光标移动到n位置,移动单位是byte,所有如果是utf-8的中文部分要是3的倍数,因为一个中文在utf-8是24位,3个字节。

通常我们使用seek都是移动到开头或者结尾

移动到开头:seek(0) ,但是实际上是seek(0,0)

移动到结尾:seek(0,2)

seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾

f = open("log", mode="r+", encoding="utf-8")
f.seek(0) # 光标移动到开头
content = f.read() # 读取内容, 此时光标移动到结尾
print(content)
f.seek(0) # 再次将光标移动到开头
f.seek(0, 2) # 将光标移动到结尾
content2 = f.read() # 读取内容. 什么都没有
print(content2)
f.seek(0) # 移动到开头
f.write("小辣鸡") # 写入信息. 此时光标在9 中文3 * 3个 = 9
f.flush()
f.close()

tell()

使用tell()可以帮我们获取当前光标在什么位置

f = open("log", mode="r+", encoding="utf-8")
f.seek(0) # 光标移动到开头
content = f.read() # 读取内容, 此时光标移动到结尾
print(content)
f.seek(0) # 再次将光标移动到开头
f.seek(0, 2) # 将光标移动到结尾
content2 = f.read() # 读取内容. 什么都没有
print(content2)
f.seek(0) # 移动到开头
f.write("逼崽子") # 写入信息. 此时光标在9 中?文3 * 3个 = 9
print(f.tell()) # 光标位置9
f.flush()
f.close()

truncate() 截断文件

f = open("log", mode="w", encoding="utf-8")
f.write("哈哈") # 写入两个字符
f.seek(3) # 光标移动到3, 也就是两个字中间
f.truncate() # 删掉光标后面的所有内容
f.close()
f = open("log", mode="r+", encoding="utf-8")
content = f.read(3) # 读取9个字符
f.seek(4)
print(f.tell())
f.truncate() # 后面的所有内容全部都删掉
# print(content)
f.flush()
f.close()

所以如果想做截断操作. 注意:先挪动光标. 挪动到你想要截断的位置. 然后再进行截断
关于truncate(n), 如果给出了n. 则从开头进行截断, 如果不给n, 则从当前位置截断. 后?面
的内容将会被删除

原文地址:https://www.cnblogs.com/zly9527/p/11253255.html

时间: 2024-08-25 07:31:20

文件操作02的相关文章

【Foundation】NSFileManager文件操作.02

1.文件目录操作 // 1.创建文件操作对象fm,并打印出当前目录 NSFileManager *fm=[NSFileManager defaultManager]; // 获取当前目录 NSLog(@"当前目录:%@",[fm currentDirectoryPath]); ///2014-04-01 13:58:20.523 NSFileManager[1161:303] 当前目录:/Users/haiyefeng/Library/Developer/Xcode/DerivedDa

C语言之文件操作08——总结

C程序的文件操作共涵盖7个例题,包含格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容. 文件操作使得程序有更强的拓展性,使其可以单独保存数据,这为程序的调试和优化打下了坚实的基础,为我们实现大规模计算提供了可能.至此,相信大家对文件操作也有了比较好的认识,无非是写入.读取.调用. 我们常常会听说C的强大,也是因为她有着文件操作的功能,而文件数据是可以方便重写和维护的. MATLAB数学软件是一款十分强大的工具型软件,它是通过C语言来表达算法的,作为面向过程的编程语言C,

Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作. 常见对文件中行进行操作: #这里列出两个常用的方法 方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print l

文件操作1创建文件

1.[[email protected] ]# vi list     #如果testfile不存在,则vi会自动创建一个名为testfile的文件,并在Vi打开该文件等待用户输入内容. 2.[[email protected] ]# ls -l >listfile #利用重定向,将ls -l 的执行结果输出到新文件listfile中,也可使用cat,more,less或其它命令结合重向运算符>来生成新文件 3.[[email protected] ]# cp file  file2   #复

C提高5 高级结构体 文件操作

1,昨天的作业题经典C语言题型 1将全局区二维字符拷贝到堆中 2将栈区二维字符拷贝到堆中 3合并栈区与全局区的二维字符数组 4把数组排序 5打印堆区的二维数组 6释放堆空间 [email protected]:~/high$ cat main.c  #include <stdio.h> #include <stdlib.h> #include <string.h> /********** 释放二级指针方式1,只释放堆中内存 ********/ void free_two

Python 小程序,对文件操作及其它

以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行进行操作: #这里列出两个经常使用的方法 方法01: 一次性读取全部行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print

自动化运维Python系列(三)之基础函数和文件操作

函数作用 增强代码的重用性和可读性 在没有使用函数编程之前,我们可能一直遵循的都是面向过程编程,即根据业务逻辑从上到下实现各个功能,这样的做的坏处是代码可读性不强,大量冗余代码,而且执行效率不高:有了函数后,我们就可以将多次使用到的相同代码模块放在单独的函数定义中,在任何想要调用它的地方随时调用,这就叫做函数式编程. 面向对象编程其实就是对函数进行再分类和封装,让开发"更快更好更强..." 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点:

文件操作c/c++/c#

1 c 文件操作 http://www.cnblogs.com/duzouzhe/archive/2009/10/24/1589348.html 2 c++文件读写 http://blog.csdn.net/kingstar158/article/details/6859379 3 c#读写 http://www.cnblogs.com/blsong/archive/2010/10/10/1847063.html 4 C#流(stream) http://www.cnblogs.com/liux

[转载]python:open/文件操作

open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:'rb','wb','r+b'等等 读写模式的类型有: rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)w     以写方式打开,a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+     以读写模式打开w+     以读写模式打开 (参见 w )a+