文件操作
总结:
#文件操作 """ 文件操作模式: 读: 默认指针位置在文件开头 r read() read(n)#按字符读取,中英文都是一个字符 readline()#按行读取,括号中加参数,代表读取该行多少字符 readlines(n)#返回列表,每一行是一个元素,n表示指定行数的列表 for循环#按行读取有换行符,一定要用.strip()处理 rb b模式下不允许指定encoding r+ 读写,追加/部分覆盖 r+b 写: 默认指针位置在文件开头 w 没有文件创建,有文件清空写入新内容 wb w+ 写读,与r+类似,但w+会清空再写入 w+b 追加: 默认指针位置在文件末尾 a 没有文件创建,有文件在最后面追加新内容,可seek修改指针位置追加,原内容后移 a+ 可读 ab 不可读,写入格式需要是bytes类型 a+b 可读 补充:英文字母、数字、特殊字符utf-8和gbk可以互相识别,因为都是引用ascii码,所以可以直接转换。 但中文不可以,需保持编码一致。 """ #open('file_path', encoding='', mode=''),得到文件句柄的对象,参数依此是路径、编码方式、操作权限(默认只读,可省略) f = open('1.txt', encoding='utf-8', mode='w')#其他模式参考https://www.runoob.com/python/python-func-open.html fileObject.truncate() #截断,从头开始,只能在可写模式下使用,省略参数从当前位置截断 fileObject.write('str') #写入文件 fileObject.seek() #移动文件指针,因python编辑文件,读写使用同一指针,写完以后如要打印验证,需要把指针移到开始位置,seek(1,0),参数一是偏移量,参数二是位置,0=初始位置,1=当前位置,2=末尾 fileObject.tell() #返回文件指针当前位置 fileObject.close() #关闭文件 #文件操作的另一种写法 with open('file_path', mode='r') as f1, open('file2_path', encoding='utf-8', mode='w') as f2: print(f1.read()) print(f2.read())
示例:
#读 #r file = open('day8/1.txt', encoding='utf-8', mode='r') print(file.read())#读取文件内容 file.close()#关闭文件,必须!!! #read(n) 按字符读取,中英文都是一个字符 file = open('day8/1.txt', encoding='utf-8', mode='r') print(file.read(5)) file.close() #readline(size) 按行读取,参数是指定长度 file = open('day8/1.txt') print(file.readline()) file.close() #readlines() 按行读取文件所有内容,返回列表,每一行是一个元素 file = open('day8/1.txt') print(file.readlines()) file.close() #***for循环读取 file = open('day8/1.txt') for line in file: print(line.strip())#按行读取有换行,一定记得处理 file.close() #rb,非文字类型文件 file = open('day8/1.txt', mode='rb') print(file.read()) file.close() # file = open('day8/1.png', mode='rb') # print(file.read()) # file.close() #r+,读写,追加/部分覆盖 """ file = open('day8/1.txt', mode='r+') print(file.read()) file.seek(0) file.write('233333') file.seek(0) print(file.read()) file.close() """ #r+b,不支持指定encoding """ file = open('day8/1.txt', mode='r+b') print(file.read()) file.seek(0) file.write('test11'.encode('utf-8')) file.seek(0) print(file.read()) file.close() """ #写,没有文件时创建文件写入内容; 有文件则清空再写入 #w:不能读 file = open('day8/1.txt', encoding='utf-8', mode='w') file.write('总是记不住') file.close() file = open('day8/2.txt', encoding='utf-8', mode='w') file.write('为啥总记不住') file.close() #w+,写读,与r+类似,但w+会全清空再写入 file = open('day8/1.txt', mode='w+') file.write('W+模式') file.seek(0) print(file.read()) file.close() #wb,不支持指定编码,不能读 file = open('day8/1.txt', mode='wb') file.write('WB模式测试'.encode('utf-8')) file.close() #w+b,不支持指定编码,可读 file = open('day8/1.txt', mode='w+b') file.write('w+b模式'.encode('utf-8')) file.seek(0) print(file.read()) file.close() #追加 #a,有文件追加,没文件创建填写,不可读 #a+,可读 file = open('day8/4.txt', mode='a+') print('位置位置', file.tell()) file.seek(0) print('位置位置', file.tell()) file.write('test') file.seek(0) print(file.read()) file.close() #ab,不可读 file = open('day8/5.txt', mode='ab') file.write('test'.encode()) # file.seek(0) # print(file.read()) file.close() #a+b,可读 file = open('day8/5.txt', mode='a+b') file.write('测试'.encode('gbk'))#写入格式需要是bytes类型,故字符串用encode转码 file.seek(0) print(file.read()) file.close() #非文字的文件读取写入 file = open('day8/1.jpg', mode='rb') content = file.read() # print(content) file2 = open('day8/6.jpg', mode='wb') file2.write(content) print(file.readable())#判断是否可读 print(file.writable())#判断是否可写 file.close() file2.close() #fileObject.seek(offset[, whence]) 文件指针移动(按字节),默认从头开始,第二个参数:0 从文件开头,1 从当前位置,2 从文件末尾 #有返回值,成功返回当前位置,失败返回-1 #fileObject.tell() 返回指针当前位置 file = open('day8/4.txt') print(file.tell()) print('seek返回', file.seek(3)) print(file.tell()) file.seek(0, 2) print('tell返回', file.tell()) file.read() print('读取文件后指针位置', file.tell()) file.close() #fileObject.truncate([size]) 文件截断,只能在可写模式下使用,省略参数从当前位置截断 file = open('day8/4.txt', mode='r+') print('r模式下默认指针位置', file.tell()) file.truncate() print(file.tell()) file.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现