【python】文件读写学习心得

今早着重重新学习了一下python的文件读写,有几个新的学习收获需要记录:(主要内容学习自嵩天教授的《Python语言程序设计课程》,以及《[小甲鱼]零基础入门学习Python》)

一、文件的读
假设f为文件,有三种读文件的方式

  1. f.read(n)
    这是按照字符读,读取文件的前n个字符。若n缺省,则f.read()是读取全部内容。需要注意的是,它返回的是一个字符串形式。它读取完后,文件指针会指到第n个字符后。
  2. f.readline()
    这个方法是每次读取一行,返回的也是一个字符串的形式,该行的换行符也会在字符串中。每次调用后指针会指向下一行
  3. f.readlines()
    这个方法是读取整个文件所有行。它返回的是一个list变量中,每行作为一个元素,而且每行的换行符也会包括在每个元素中。

注意:文件的遍历**
(一)有两种遍历全文件的方法:

1、一次读入,统一处理(把文本变成一个大的字符串,对大字符串进行统一处理)

 f=open("1.txt")
 t=f.read()
     这里对文本进行处理
 f.close()
  • 按数量读入,逐步处理(注意,按字符个数读入的t也是字符串)
f=open("1.txt")
t=f.read(2)
while t!='':
    这里对字符进行处理
    t=f.read(2)
f.close()

(二)有两种按行遍历的方法:

  1. 一次读入,逐行处理(每行的类型均为字符类型)
    摘自python文档:如果你想以列表的形式读取文件中的所有行,你也可以使用 list(f) 或 f.readlines()。
f=open('1.txt')
for line in f.readlines():
    这里对文本进行处理
f.close()
  1. 逐行读入,逐行处理:(读取的逐行也为字符类型)
    这种方法是python文档中推荐的:要从文件中读取行,你可以循环遍历文件对象。这是内存高效,快速的,并简化代码:
f=open('1.txt')
for line in f:
    这里对文本进行处理
f.close()

二、文件的指针(参考自https://www.runoob.com/python/file-seek.html)
在操作文件时,文件指针的位置也十分重要,大家一定要留意文件指针的变化。它会关系到你是否能读到想要的内容,是否往正确的位置写入数据等等。对于指针的操作使用的是seek方法,如下所示。

f=open('1.txt')
f.seek(offset[, whence])

offset – 开始的偏移量,也就是代表需要移动偏移的字节
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

三、文件的写入
1、如果要写入一个,注意是 一个 字符串 ,则使用f.write(‘dfsfafdsf’)
2、除了可以写入一个字符串之外,还可以写入一个元素全部都是字符串的列表,注意,写入时,会将列表中的元素收尾相连写入文件。
ls=[“123”,‘dfadsf’,’+’]
f.writelines(ls)
结果为将字符串123dfadsf+写入了文件f中。

注意:这里还有一个小插曲,我在联系是使用了下面的代码,可是运行多次文件均没有写入数据,最后查找原因才知是因为没有在最后加入f.close()。当没有使用close()时,要写入的内容依然在缓冲区中,没有写入文件,如果中途终止,文件里就会没有内容。(https://blog.csdn.net/Alber_yang/article/details/89495183)

f=open('1.txt','w')
ls=['fdsfsf','12132213']
f.writelines(ls)

你可能感兴趣的:(python)