python学习笔记6——文件的使用方法

张开发
2026/5/5 15:57:01 15 分钟阅读
python学习笔记6——文件的使用方法
一、文件的类型1. 文本文件一般由单一特定编码的字符组成不能出现多种如Unicode编码内容易于统一展示和阅读——由于存在编码可以看作存储在磁盘上的长字符串如一个txt格式的文本文件2. 二进制文件直接由0和1构成没有统一的字符编码文件内部数据的组织结构与文件用途有关如png格式的图片、mkv格式的视频文件区别是否有统一的字符编码二、文件的操作1. 打开文件变量名 open(文件路径及文件名,打开模式) 这个变量相当于指针模式名称说明文件指针位置文件不存在文件存在r只读模式只能读取文件内容不能写入默认值开头报错FileNotFoundError正常读取w只写模式只能写入文件内容不能读取开头创建新文件清空内容后写入a追加模式在文件末尾追加内容不能读取末尾创建新文件末尾追加内容x创建模式创建新文件并写入文件已存在则报错开头创建新文件报错FileExistsErrorb二进制模式以二进制格式读写文件修饰符——读取为字节流---t文本模式以文本格式读写文件默认修饰符——读取为字符串---读写模式与r/w/x/a一同使用在原功能基础上增加同时读写操作修饰符---· 不加模式默认为r只读模式不加b/t/默认按照b文本模式· 结束对文件的操作后一定要关闭文件f.close() —— ‘’读写模式不需要▲文件的路径相对路径和绝对路径相对路径同一文件夹下只需要标注”文件名.文件格式“绝对路径非同一文件夹下要标注完整路径path1 test.txt # 相对路径 path2 D:/testFile/test.txt # 绝对路径 # path2 D:\\testFile\\test.txt # 绝对路径另一种写法 f1 open(path1,r) f2 open(path2,r)2. 读取文件内容方法语法说明返回值适用场景read()file.read(size)读取所有内容或前size长度的内容字符串或字节串小文件一次性读取readline()file.readline(size)读取一行内容或该行前size长度的内容指针随之移动到读完位置字符串或字节串逐行处理节省内存readlines()file.readlines()读取所有行或hint行列表每行为一个元素需要所有行且内存充足seek()file.seek(offset)改变当前文件操作指针的位置offset0为文件开头1为当前位置开始2为文件结尾-移动文件指针到指定位置for循环for line in file:迭代器方式逐行读取每行字符串大文件逐行处理最省内存# 准备测试文件 with open(test.txt, w) as f: # f open(test.txt, w) f.write(0123456789ABCDEFGHIJ) # 相比open的优势无需手动f.close()自动管理资源关闭文件 # 基础定位 with open(test.txt, r) as f: print(f.read(5)) # 01234读取前5个字符 f.seek(0) # 回到开头 print(f.read(5)) # 01234再次读取 f.seek(5) # 移动到第5个位置 print(f.read(5)) # 56789 pos f.tell() # 获取当前位置 print(f当前位置: {pos}) # 103. 写入文件内容方法语法说明参数类型返回值适用场景write()file.write(str)写入单个字符串字符串文本模式或字节串二进制模式写入的字符数/字节数写入单行或少量数据writelines()file.writelines(sequence)写入多个字符串字符串序列列表、元组等无返回值批量写入多行数据# write() with open(test.txt, w) as f: count f.write(Hello, World!) print(f写入 {count} 个字符) # 写入 13 个字符 # 写入多行需要手动添加换行符 with open(test.txt, w) as f: f.write(第一行\n) f.write(第二行\n) f.write(第三行) # 注意若关闭文件后再写入会覆盖原有内容此时使用打开模式‘a’末尾添加 # writelines() lines [第一行\n, 第二行\n, 第三行\n] with open(test.txt, w) as f: f.writelines(lines) # 一次性写入所有行 # 注意不会自动添加换行符 lines_without_newline [第一行, 第二行, 第三行] with open(test.txt, w) as f: f.writelines(lines_without_newline) # 结果会连成一行第一行第二行第三行 # 正确的做法确保每行都有换行符 lines [f{line}\n for line in [第一行, 第二行, 第三行]] with open(test.txt, w) as f: f.writelines(lines)三、数据的读取与存储.csv文件——以逗号分隔数据可用excel打开每一行是一维数据列表类型通过一种编码表示字符不同读取方式下会得到不同的数据类型例如读取 张三25北京读取方式每一行的数据类型示例csv.reader()列表List[张三, 25, 北京]csv.DictReader()字典Dict{姓名: 张三, 年龄: 25, 城市: 北京}readlines()/read()字符串String张三,25,北京\n# 举例一维文件 # 写入 ls [北京,上海,深圳,广州] f open(city.csv,w) str ,.join(ls) # 转换为字符串 print(str) # 输出北京,上海,深圳,广州 f.write(str) # 读取 f open(city.csv,r) info f.read() # 读取到一个字符串北京,上海,深圳,广州 ls info.split(,) # 转换为列表 print(ls) # 输出[北京,上海,深圳,广州] f.close() # 举例二维文件 # 写入 matrix [[1,2,3],[4,5,6]] f open(test.csv,w) for row in matrix temp ,.join(row) f.write(temp\n) # 注意换行 f.close() # 读取 f.open(test.csv,r) matrix [] for line in f line line.strip(\n) # 注意去除最后的换行符 temp line.split(,) matrix.append(temp) f.close()

更多文章