【Python函数与模块】(23)文件的读写
1. 打开文件/关闭文件
open:f = open('test.txt')
close:f.close()
注意:此处需要做异常处理,文件不存在时会有异常
2. with open:利用它打开文件可以不需要关闭
with open('test.txt') as f:
do_something(f)
该句到达末尾时,会自动关闭文件,无论是否异常
3. 文件读取
read():读取文件
readline():读取一行文件
readlines():读取所有行,返回的是list
seek():跳过指定字符长度,再读取文件
4. 文件写入
write():写入一行
writelines():写入多行
def read_file(): """读取文件""" file_name = "test.txt" file_name2 = "test2.txt" # 使用绝对路径 file_path = "F:\\Code\\Python\\Step01\Chapter02\\file_rw\\test.txt" file_path2 = "F:/Code/Python/Step01/Chapter02/file_rw/test.txt" # 使用普通方法打开文件 f = open(file_name, encoding='utf-8') # f2 = open(file_name2, encoding='utf-8') # 读取文件内容 print(f.read()) # 读取指定内容:read会记录上次读取的位置,在此基础上再读8个字符 # print(f.read(8)) # print(f.read(8)) # 随机读取:跳过前20个字符(注意:若是中文文件,不好使用该方法读取,会报错) # f2.seek(20) # print(f2.read(5)) # 输出:'utf- # 按行读取:读一行 # print(f.readline()) # 输出:中国战“疫”主要采取了两大措施: # 读取所有行,返回list # print(f.readlines()) # 输出:['一是对暴发地区进行封堵,阻断传播;\n', '二是基层群防群治,也就是联防联控。\n', '现在防控的核心也是两个,\n', '第一是保持距离,\n', '第二是戴口罩。'] # 关闭文件 f.close() # 使用with打开文件,可以不需要写关闭 with open(file_path2, encoding='utf-8') as file: print(file.read()) if __name__ == "__main__": read_file()
from datetime import datetime import random def write_file(): """写入文件""" file_name = "write_test.txt" # 以写入的方式打开文件 f = open(file_name, 'w') f.write("hello") f.write("\n") f.write("world") # 关闭文件 f.close() def write_mult_file(): """写入多行内容""" file_name = "write_mult_test.txt" with open(file_name, 'w', encoding='utf-8') as f: l = ["第一行", "\n", "第二行", "\r", "第三行"] f.writelines(l) def write_user_log(): """记录用户日志,使用追加的方式,w是覆盖的方式""" file_name = "write_user_log.txt" rest = "用户:{0},时间:{1}".format(random.randint(1000,9999), datetime.now()) with open(file_name, 'a', encoding='utf-8') as f: f.write(rest) f.write("\n") def read_and_write(): """先读,再写""" file_name = "read_and_write.txt" with open(file_name, 'r+', encoding='utf-8') as f: rest = f.read() # 若文件中含有1 写入aaa 反之写入bbb if "1" in rest: f.write("aaa") else: f.write("bbb") f.write("\n") if __name__ == "__main__": write_file() write_mult_file() write_user_log() read_and_write()