标签:语法 常用 seek -- 文件读取 使用 内存 when 你好
1.os.mknod("test.txt") #创建空文件
2.f = open("test.txt",w) #直接打开一个文件,如果文件不存在则创建文件
3.关于open 模式:
read 读取整个文件
f = open(‘doubi.txt‘, ‘r+‘, encoding=‘utf-8‘) data = f.read() print(data) #执行结果为: peiqi.abc123.21.chengguan alex.abc123.24.IT gangniang.abc123.27.dachu
f = open(‘doubi.txt‘,‘r‘) for line in f: Print(line)
也可以用readline和readlines
readline 只读一行,遇到\r or \n为止
f = open(‘doubi.txt‘, ‘r+‘, encoding=‘utf-8‘) data=f.readline() data1=f.readline() data2=f.readline() print(data) print(data1) print(data2) #结果为: peiqi.abc123.21.chengguan alex.abc123.24.IT gangniang.abc123.27.dachu
readlines 读取整个文件到一个迭代器以供我们遍历(读取到一个list中,以供使用,比较方便)
f = open(‘doubi.txt‘, ‘r+‘, encoding=‘utf-8‘) data=f.readlines() print(data) print(type(data)) #执行结果为: [‘peiqi.abc123.21.chengguan\n‘, ‘alex.abc123.24.IT\n‘, ‘gangniang.abc123.27.dachu\n‘] <class ‘list‘>
另外需要注意的是read是按字符读取,tell和seek是按照字节 切记否则是坑
2. 语法格式: file.tell() 注: 此方法没有参数
f = open(‘doubi.txt‘, ‘r+‘, encoding=‘utf-8‘) f.seek(3) #表示向前移动3个字节 data = f.tell() #获取当前指针位置 print(data) f.close() #结果为 3 # f.seek(0,0) #表示将文件指针移动到文件头处 # f.tell() # # f.seek(0,2) #表示将文件读取指针移动到文件尾部 # f.tell()
注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。
如“你好啊” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“好”和“啊”两个字中间。
但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了,少了一个字节。
close 是关闭文件的时候才进行保存(将数据从内存中写入硬盘)
f = open(‘doubi.txt‘, ‘r+‘, encoding=‘utf-8‘) f.seek(9) f.write(‘城‘) f.close()
flush
把文件从内存buffer里强制刷新到硬盘,多用于循环。
readable(self, *args, **kwargs):
判断是否可读
seekable(self, *args, **kwargs)
判断文件是否可进行seek操作
writable(self, *args, **kwargs):
判断文件是否可写
truncate(self, *args, **kwargs):
按指定长度截断文件,类似于删除,从指定位置开始往后删除。
*指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。
标签:语法 常用 seek -- 文件读取 使用 内存 when 你好
原文地址:https://www.cnblogs.com/dexterfan/p/9583347.html