读取文件:r,只读不能写,文件不存在报错
#打开文件 file_object=open('log.txt',mode="r", encoding='utf-8')#读取:mode为r,只读不能写,文件不存在,报错 # 读取内容, content=file_object.read() print(content) #关闭文件 file_object.close()
写入文件:w,只写不能读(先清空文件),文件不存在则新建
#打开文件
file_object=open('looooog.txt',mode="w", encoding='utf-8')#mode为 w,write(只写,先清空,一般用于新建文件)
#写内容
file_object.write("李伟")
#关闭文件
file_object.close()
写入文件:a只追加不能读,文件不存在新建
#打开文件
file_object=open('log.txt',mode="a", encoding='utf-8')#写入:a,只在尾部追加不读,文件不存在新建
#写内容
v=file_object.write("您好啊")
#关闭文件
file_object.close( )
可读可写
读取,写入:r+,从文件头开始写,保留原文件中没有被覆盖的内容
file_object = open('log.txt',mode='r+',encoding='utf-8') file_object.seek(2) # 调整光标的位置,2表示2字节 content = file_object.read()#读当前光标后面的内容 file_object.write('浪') # 读取内容content = file_object.read()print(content)file_object.write('666')#末尾添加666 #关闭文件 file_object.close()
可读可写
w+,打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
写入时会将文件清空,读取时需要调整光标
file_object = open('log.txt',mode='w+',encoding='utf-8') data = file_object.read() print(data) file_object.write('alex') file_object.seek(0) data = file_object.read() print(data) file_object.close()
可读可写:a+,默认追加时光标永远在最后
file_object = open('log.txt',mode='a+',encoding='utf-8') # file_object.seek(0) # data = file_object.read() # print(data) file_object.seek(0)#即使光标移到最前面 file_object.write('666')#写仍追加到最后 file_object.close()
读操作
file_object = open('log.txt',mode='r',encoding='utf-8') # 读取文件的所有内容到内存 # data = file_object.read() # 从当前光标所在的位置向后读取文件两个字符 # data = file_object.read(2) # 读取文件的所有内容到内存,并按照每一行进行分割到列表中。 # data_list = file_object.readlines() # print(data_list) # 如果以后读取一个特别大的文件 (**********) # for line in file_object: # line = line.strip()#除去里面的换行 # print(line) # file_object.close()
写操作
file_object = open('log.txt',mode='w',encoding='utf-8') file_object.write('asdfadsfasdf ') file_object.write('asdfasdfasdfsadf') file_object.close()
练习题
#!/usr/bin/env python # -*- coding:utf-8 -*- # 练习1:请将user中的元素根据 _ 链接,并写入 'a1.txt' 的文件 """ user = ['alex','eric'] data = "_".join(user) file_object = open('a1.txt',mode='w',encoding='utf-8') file_object.write(data) file_object.close() """ # 练习2:请将user中的元素根据 _ 链接,并写入 'a1.txt' 的文件 """ user = [ {'name':'alex','pwd':'123'}, # alex|123 {'name':'eric','pwd':'olbody'}, # eric|olbody ] file_object = open('a2.txt',mode='w',encoding='utf-8') for item in user: line = "%s|%s " %(item['name'],item['pwd'],) file_object.write(line) file_object.close() """ # 练习3:请将a2.txt中的文件读取出来并添加到一个列表中 ['alex|123','eric|olbody'] # 方式一 """ file_obj = open('a2.txt',mode='r',encoding='utf-8') content = file_obj.read() file_obj.close() content = content.strip() data_list = content.split(' ') print(data_list) """ """ result = [] file_obj = open('a2.txt',mode='r',encoding='utf-8') for line in file_obj: line = line.strip() result.append(line) file_obj.close() print(result) """
总结
注意:读取文本文件时,Python将其中的所有文本都解读为字符串,如果你读取的是数字,必须使用int()将其转换
- 打开 - r,只能读。 【**】 - w,只能写,写之前清空。 【**】 - a,只能追加。【*】 - r+ - 读:默认从0的光标开始读。也可以通过 seek 调整光标的为位置。 - 写:若光标在0位置,则会覆盖0光标后面的字,从光标所在的位置开始写,也可以通过 seek 调整光标的位置。 - w+ - 读:默认光标永远在写入的最后或0,也可以通过 seek 调整光标的位置。 - 写:先清空。 - a+ - 读:默认光标在最后,也可以通过 seek 调整光标的位置。然后再去读取。 - 写:永远写到最后。
-
-
读
-
read()
-
read(2) # 字符
-
readlines()#readlines()从文件中读取每一行,并将其存储在一个列表
-
-
write
-
-
关闭