打开已存在文件或创建一个新文件
语法:open(name,mode,encoding)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式): r:只读、w:写入、a:追加等。
encoding:编码格式(推荐使用UTF-8)
例子:
f = open('test.txt', 'r', encoding="UTF-8") # 注意:编码格式需要用关键字作为参数传递
print(type(f)) #
语法:文件对象.read(num) ----- 结果:字符串
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
例子:
f = open('test.txt', 'r', encoding="UTF-8")
print(f"读取10个字节的结果{f.read(5)}") # 读取内容:我是测试文
print(f"read方法读取全部内容是{f.read()}") # 注意:这次会接着上一次接着读取
语法:文件对象.readlines( )
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
例子:
f = open('test.txt', 'r', encoding="UTF-8")
print(f"read方法读取全部内容是{f.read()}") # 读取全部
lines= f.readlines()
print(type(lines)) #
print(lines) # 空值,原因:第2行已经读取了全部
语法:文件对象.readlines( )
例子:
f = open('test.txt', 'r', encoding="UTF-8")
line1 = f.readline()
print(type(line1),line1) # 我是测试文件1 (读取一行内容)
例子:
# f = open('test.txt', 'r', encoding="UTF-8")
# for line2 in f:
# print(line2) # 读取每一行数据
for line3 in open("test.txt","r",encoding="UTF-8"):
print(line3) # 读取每一行数据
语法:文件对象.close()
语法:with open(name,mode,encoding) as 文件名:
通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法
例子:
with open('test.txt', 'r', encoding="UTF-8") as f:
for line4 in f:
print(line4)
文件存在会覆盖,文件不存在会创建
语法:文件对象.write() --- 打开文件,通过w模式
注意:
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
语法:文件对象.flush()
例子:
# f = open("test.txt", "w", encoding="UTF-8")
# f.write("hello") # 文件写入:内容写入内存中
# f.flush() # 文件刷新:将内存中积攒的内容,写入到硬盘的文件中
# f.close() # 关闭文件:内置了flush()功能
f = open("test.txt", "w", encoding="UTF-8")
f.write("你好") # 会覆盖吧上面写入的内容
语法:文件对象.write() --- 打开文件,通过a模式
open("test.txt","a",encoding="UTF-8")
f.write("\nhi1") # 换行输入
f.flush()
f.close()
小案例:
# 小案例
fr = open("test.txt", "r", encoding="UTF-8")
fw = open("test1.txt", "a", encoding="UTF-8")
for i in fr:
# print(i)
if i.count("测试") >= 1:
continue
else:
fw.write(i)
print(fw)
fr.close()
fw.close()
# fr = open("test.txt", "r", encoding="UTF-8")
# fw = open("test1.txt", "a", encoding="UTF-8")
# for i in fr:
# line = i.strip() # 去除换行符
# if line.split(",")[4] == "测试": # 以 , 分割字符串
# continue
# else:
# fw.write(line)
# fw.write("\n") # 添加换行符
# fr.close()
# fw.close()