尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

程序的数据别只活在内存里!Python 文件读写从 open 到 os 模块一次打通

程序的数据别只活在内存里!Python 文件读写从 open 到 os 模块一次打通 前面程序里的数据都存在内存里 —— 一关程序就全没了。真实应用要把数据持久化到硬盘存配置、存日志、存结果。这就是文件操作。老哥这篇从文件概念讲到读写、再到 os 模块最后用一个文件拷贝实战收尾。一、文件的基本概念文件是存在磁盘上的数据集合。按编码分两类纯文本文件有统一编码UTF-8、GBK 等可看作长字符串二进制文件没有字符编码直接由 0 和 1 组成图片 jpg、视频 avi。路径两种相对路径从当前位置开始./当前目录../上一级如./hello.py绝对路径从根目录开始如E:/Hello/hello.py。二、打开与关闭文件用open()打开或创建文件用完要close()关闭 —— 不关可能丢数据或占资源。f open(test.txt, w) # open(文件名, 模式) # ... 读写操作 ... f.close()6 种核心模式老哥画个表给你表格模式说明r只读文件不存在报错默认w写入先清空原内容不存在会创建a追加写入在末尾追加不存在会创建x创建新文件并写入已存在报错b二进制打开用于图片等非文本可读可写组合使用rt文本只读默认、rb二进制读、wb二进制写、r可读可写。完整形式还支持指定编码中文文件建议写encodingutf-8open(test.txt, r, encodingutf-8)三、写入数据f open(test.txt, w) f.write(hello world\n) f.write(nihao python\n) f.close()四、读取数据的三种姿势1. read ()全读或读指定字节f open(test.txt, rt) print(f.read()) # 读全部 f.close() f open(test.txt, rt) print(f.read(5)) # 读5个字节 print(f.read(8)) # 再读8个字节指针接着走 f.close()2. readline ()读一行f open(test.txt, rt) print(f.readline()) # 读第一行 print(f.readline(1)) # 读第二行的1个字节 f.close()3. readlines ()读所有行返回列表f open(test.txt, r, encodingutf-8) print(f.readlines()) # [hello world\n, nihao python\n] f.close()五、文件指针与常用函数seek / tell—— 控制读写的 光标 位置f open(test.txt, r) f.seek(5) # 把指针移到第5个字节 f.tell() # 返回当前指针位置seek(offset, from)的 from0 开头默认、1 当前位置、2 末尾from 不为 0 时需用二进制模式打开。with语句更省心自动关闭推荐with open(test.txt, r, encodingutf-8) as f: content f.read() # 离开 with 块自动关闭六、os 模块路径和目录操作处理文件还常配合os模块。常用函数import os os.rename(old.txt, new.txt) # 重命名 os.remove(a.txt) # 删除文件 os.mkdir(dir1) # 创建目录不支持递归 os.makedirs(a/b/c) # 递归创建目录 os.getcwd() # 当前工作目录 os.listdir(.) # 目录下文件和目录列表 os.rmdir(dir1) # 删除空目录 # os.path 路径处理 os.path.abspath(hello.py) # 相对路径转绝对路径 os.path.basename(E:/a/b.py) # 取文件名部分 b.py os.path.dirname(E:/a/b.py) # 取目录部分 E:/a os.path.join(E:/a, b.py) # 拼接路径自动处理分隔符 os.path.exists(a.txt) # 判断是否存在 os.path.isfile(a.txt) # 判断是否是文件 os.path.isdir(dir1) # 判断是否是目录 os.path.getsize(a.txt) # 文件大小字节os.walk () 递归遍历目录最常用返回 3 元组import os for root, dirs, files in os.walk(os.getcwd()): print(当前路径, root) print(目录, dirs) print(文件, files) print()七、实战文件拷贝拷贝图片用rb读、wb写逐块读写减小内存压力def copyFile(source_file_path, dest_file_path): source_file open(source_file_path, rb) dest_file open(dest_file_path, wb) content source_file.read(1024) # 一次读 1024 字节 while content: dest_file.write(content) # 写入 content source_file.read(1024) # 继续读 source_file.close() dest_file.close() copyFile(D:/a.png, E:/a.png)用with写法更规范def copyFile(src, dst): with open(src, rb) as sf, open(dst, wb) as df: while content : sf.read(1024): df.write(content) copyFile(D:/a.png, E:/a.png)老哥收尾文件操作的核心就四步open 打开选对模式→ 读 / 写 → close 关闭或用 with。再用 os 模块管路径和目录。一句话收尾写文件用w清空、a追加读文件用r二进制加b中文记得encodingutf-8能用with就别手写 close。到这里 Python 的核心语法你已经打通了。下一篇进入面向对象—— 类和对象。有问题随时回来找老哥。
返回列表