with opne()
#!/usr/bin/env python3 # -*- coding: utf-8 -*- 1、r读模式 # rb模式操作的文件是非文字类的文件:图片,视频,音频等等。 # read() read(n) readline() readlines() for循环 f1 = open('./zwc.txt', encoding='utf-8', mode='r') content = f1.read() print(content) f1.close() # r模式下五种读取方式: read() 全部读取出来 read(n) 读n个字符 在r 模式下按照字符读取 在rb 模式下按照字节读取 readline() 按行读取 readlines() 返回一个列表,列表中的每个元素是原文件的每行的数据。 for循环 f1 = open('./zwc.txt', encoding='utf-8', mode='r') for line in f1: print(line.strip()) f1.close() 2、r+读写模式 # 先读后写(后追加) # 在r+读写模式下,应该先读后写入。 f1 = open('./zwc.txt', encoding='utf-8', mode='r+') content = f1.read() print(content) f1.write('zhouwanchun') f1.close() 如果我就要先写后读呢? 光标,指针 f1 = open('./zwc.txt', encoding='utf-8', mode='r+') f1.seek(0,2) # 把光标调整到最后 f1.write('zhouwanchun') f1.seek(0) # 把光标调整到最开始 content = f1.read() print(content) f1.close() 3、写模式:w、wb、w+、w+b # 没有文件创建文件写入,有文件清空原文件内容写入新内容。 # w模式必须是以字符串的内容写入。 f1 = open('./zwc.txt', encoding='utf-8', mode='w') f1.write('mysql3306') f1.close() w+ :写读模式 f1 = open('./zwc.txt', encoding='utf-8', mode='w+') f1.write('mysql3307') f1.seek(0) print(f1.read()) f1.close() 4、a追加模式 # 追加模式:a ab a+ a+b # 没有文件创建文件追加内容,有文件在原文件的末尾追加新内容。 f1 = open('./zwc.txt', encoding='utf-8', mode='a') f1.write('mysql3306') f1.close() 5、其他操作方法 f1.fileno() f1.flush() # 强制保存 相当于ctrl + s f1.readable() f1.writeable() # 判断一个文件句柄是否可读,可写。 f1.tell() # 获取光标位置 f1.seek(3) # 调整光标位置 f1.truncate(3) # 只能在可写的模式下 截取原文件。只能从头截取,不能调整光标截取一部分。不能在w模式下使用truncate。 6、另一种打开文件的操作方式 # 自动关闭文件句柄 # 同一语句可操作创建多个文件句柄 with open('./file1', encoding='utf-8', mode='r') as f1, \ open('./file2', encoding='utf-8', mode='w') as f2: print(f1.read()) f2.write('666') 7、文件的改: # 方法一: # 1.以读的模式打开原文件,产生文件句柄f1 # 2.以写的模式打开新文件,产生文件句柄f2 # 3.读取原文件 将原文件的内容改写成新内容写入新文件。 import os with open('./1.log', encoding='utf-8', mode='r') as f1,\ open('./1.log.bak', encoding='utf-8', mode='w') as f2: old_content = f1.read() new_content = old_content.replace('mysql3306', 'mysql3307') f2.write(new_content) # 4.删除原文件。 os.remove('./1.log') # 5.将新文件重命名成原文件。 os.rename('./1.log.bak', './1.log') # 升级版 import os with open('./1.log', encoding='utf-8', mode='r') as f1,\ open('./1.log.bak', encoding='utf-8', mode='w') as f2: for line in f1: new_line = line.replace('mysql3306', 'mysql3307') f2.write(new_line) os.remove('./1.log') os.rename('./1.log.bak', './1.log')
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!