python基础学习文件内容的操作

使用python对文件内容增删改查
首先要使用方法open打开需要操作的文件。
open( 文件路径 , 打开模式 , 编码方式 )
第一个参数填写要打开的文件路径和文件名,第二个参数告诉函数以什么模式来打开文件(比如 只读,只写,读写等,最后一个参数填写需要用什么编码格式来读取内容(encoding="utf-8")
open函数打开文件后会在内存中产生一个该文件的句柄。
文件句柄
在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。
文件打开模式:
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

读取一个文件的方法:
read()方法:将整个文件所有内容一次性读取到内存中,在进行操作
f = open('a.txt','r','encoding="utf-8"')
text = f.read()

readline()方法:只读取一行文件,第一次读取第一行,第二次读取第二行,以此类推,可以用for循环出整篇文章
f = open('a.txt','r','encoding="utf-8"')
for i in range(20): #读取文件前十行
print(f.readline())
readlines()方法:将文本读取为列表模式,每行文本为列表的一个值

上面的几种方法都是将整个文件内容全都读取到内存中操作,所以会占用大量的内存,我们在读取大容量文件时应该使用下面的方法:
f = open(‘a.txt’,'r',"utf-8")
for line in f:
print(line)
f.close()
这种方法的好处是永远在内存中只保留一行的文本,这样做就大量的降低了内存使用
写入文件:
write()方法:对一个文件进行写入操作
writelines()方法:用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 。
操作完成,关闭文件
f.close()方法在对文件进行操作后,用来关闭文件

文件句柄的操作
f.tell() 返回当前的文件光标位置
f.seek() 指定文件光标位置(如设备文件tty是不能移动文件光标位置的)
f.seekable() 判断文件是否可以移动文件光标位置
f.encoding() 打印文件的编码格式
f.name() 打印文件名
f.isatty()打印一个终端设备
f.readable() 判断一个文件是否可读取
f.writeable() 判断一个文件是否可写入
f.flush() 强制刷新,直接将文件操作写入硬盘(不等待缓存序列)

经常忘记关闭文件,使用with语句来自动关闭文件;
语句格式: with open(文件1) as f1, open(文件2) as f2:
print(f1.read())
print(f2.read)
可以同时使用open方法打开多个文件进行操作,语句结束时自动关闭打开文件

原文地址:https://www.cnblogs.com/uyahs/p/7715247.html