python成长之路9——文件操作open
一. 打开文件
f = open("db","r",encoding="utf8")
- r:只读
- w:只写,会先清空文件
- a:追加
- x:如果文件存在,则报错,否则,创建文件并只写
- b:上面的参数都可以加“b”,意思是以二进制形式打开文件,读取写入的都是字节,就不需要考虑“encoding”啦
- encoding="utf8":告诉python解释器用utf8进行转码,当我们读取字符串时解释器会将字节转换成字符串,当我们写入字符串时解释器会把字符串自动转换成字节,这个过程是python解释器完成的,我们只要确保文件打开时的编码和文件保存时的编码保持一致就行
- +:r+,w+,a+,x+都是读写,但是我们一般用r+,因为,w+会先清空文件,a+是追加,x+文件存在会报错
- with open("文件名","打开方式",encoding="utf8") as f: 推荐用这种文件打开方式,不用关闭文件而且可以同时打开两个文件,如下: with open("db","r",encoding="utf8") as f1, open("db2","w",encoding="utf8") as f2
例子:用“b”打开文件
1 #用b打开文件 2 with open("db","wb") as f: 3 temp=bytes("张燕",encoding="utf8") 4 print(temp) 5 f.write(temp) 6 with open("db","rb") as f: 7 print(f.read()) 8 9 执行结果: 10 b'\xe5\xbc\xa0\xe7\x87\x95' 11 b'\xe5\xbc\xa0\xe7\x87\x95'
用b打开文件
二. 操作文件
- read(): 无参数,读全部;有参数(n),文件打开加b的话读取n个字节,无b的话读取n个字符
- tell(): 获取当前指针的位置(字节)
- seek():指针跳到指定位置(字节)
- write():写数据,文件打开加b的话,写字节;无b的话,写字符
- fileno():文件描述符
- flush():从内存刷到硬盘
- readable():文件可读返回True,否则False
- readline():读取一行
- truncate():截断文件,会把指针之后的内容全部删除
- for line in f:循环文件每一行
- f.close():关闭文件
1 #seek是不受encoding的影响的,seek都是按字节的,如果你有中文,seek(1)会把这个中文劈开 2 with open("db","r+",encoding="utf8") as f: 3 f.seek(3) 4 f.write("flag") 5 6 执行前db内容: 7 ab张燕ijklmnopqrstuvwxyz张杰 8 执行后db内容: 9 ab�flag�ijklmnopqrstuvwxyz张杰 10 11 #tell()获取当前指针的位置,和seek一样也是按字节来算的 12 with open("db","r+",encoding="utf8") as f: 13 print(f.read()) 14 with open("db","r+",encoding="utf8") as f: 15 print(f.read(2)) 16 print(f.tell()) 17 18 执行结果: 19 张燕abcdefghijklmnopqrstuvwxyz 20 张燕 21 6
seek和tell
1 #f.write() 从指针位置开始写,如果指针在文件中间会覆盖对应的字节 2 # 但是如果一旦开始读文件,不管有没有读到文件尾,python规定都会从文件尾开始写 3 with open("db","r+",encoding="utf8") as f: 4 f.seek(2) 5 f.write("张燕") 6 f.seek(0) #主动把指针调到文件开头 7 data = f.read(12) 8 print(data) 9 f.write("张杰") 10 f.seek(0) 11 data = f.read() 12 print(data) 13 14 执行结果: 15 ab张燕ijklmnop 16 ab张燕ijklmnopqrstuvwxyz张杰
write
1 #f.truncate() 2 #截断文件,会把指针之后的内容全部删除 3 with open("db","r+",encoding="utf8") as f: 4 print(f.read()) 5 f.seek(3) 6 f.truncate() 7 f.seek(0) 8 print(f.read()) 9 10 执行结果: 11 1234567890 12 123
truncate
转载于:https://www.cnblogs.com/meitangyanyan/p/6424818.html
python成长之路9——文件操作open相关推荐
- Python升级之路( Lv9 ) 文件操作
Python系列文章目录 第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础 第七章 面向对象深入 第八章 异常机制 第九章 ...
- 【Python成长之路】如何用python开发自己的iphone应用程序,并添加至siri指令
哈喽大家好,我是鹏哥. 今天想记录的学习主题是 -- 基于pythonista3 app开发自己的iphone应用程序. ~~~上课铃~~~ (由于今天被小伙伴推荐了这首歌,因此就应他的要求,作为此文 ...
- Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程–>错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个人 ...
- (转)Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...
- 【Python成长之路】破解Boss直聘网站滑块验证
哈喽大家好,我是鹏哥. 今天要记录的内容是 -- 破解Boss直聘网站的滑块验证. -- 上 课 铃-- TuesdayBurak Yeter;Danelle Sandoval - Tuesday 1 ...
- 【Python成长之路】如何用2行代码将抖音视频设置成我的手机铃声
哈喽大家好,我是鹏哥. 今天想学习记录的内容是 -- 如何用python提取视频中的音频. ~~~上课铃~~~ 1 写在前面 本来按我的性子和精力,一周一般只想写一篇博客:但是今天在刷抖音时,发现有个 ...
- Python学习之路5☞文件处理
Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】
[写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...
- python开发_xml.etree.ElementTree_XML文件操作
python开发_xml.etree.ElementTree_XML文件操作_该模块在操作XML数据是存在安全隐患_慎用 xml.etree.ElementTree模块实现了一个简单而有效的用户解析和 ...
最新文章
- 用高中数学理解AI “深度学习”的基本原理
- 关闭Windows不必要服务,电脑更安全
- django中的ajax_post请求
- 谈谈微服务中的 API 网关(API Gateway)
- CSS3属性box-shadow使用教程
- 傅里叶变换性质证明卷积_图傅里叶变换
- 软件项目架构简单总结
- HDU-1212-Big Number【大数】
- qq音乐服务器的位置,QQ音乐的歌曲真实地址解析
- 基于JavaEye-API实现的Gerry-聊天QQ版v1.0 (全)
- 微信企业号回调模式 java_java微信企业号开发之开发模式的开启
- 基于JAVA小微企业人事管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
- 数学形态学之腐蚀算法
- xxxxxlllllxl的专栏 链接,很多实际动手操作的东西
- 容错服务器ftserver网卡状态,容错服务器ftServer260045006300技术规格
- Springboot毕设项目汽车美容店管理系统q5x50java+VUE+Mybatis+Maven+Mysql+sprnig)
- Java黑皮书课后题第4章:*4.21(检查SSN)编写一个程序,提示用户输入一个社保号码(格式是DDD-DD-DDDD,D是1个数字)你的程序应该判断输入是否合法
- (六)Spring之回顾工厂模式
- python发微信-python实现向微信用户发送每日一句
- 埃斯顿三轴机器人编程_博世力士乐:埃斯顿机器人(手腕+小臂)装配线
热门文章
- 设计模式学习笔记-观察者模式(转)
- AES和TKIP的区别
- 第十届中国信息安全大会召开 主打安全创新
- 用 API 提取、写入指定网站的 Cookie - 回复 bangrj 的问题
- POJ2528 计算可见线段(线段树)
- Windows 环境下安装redis 及其PHP Redis扩展
- Angular2视图操作之ViewChildViewChildren
- C#里的委托和事件实现 (转)
- [Linux]lnmp一键安装包,访问yii/tp5/laravel的时候,报错500或者空白页面
- 20165301 预备作业三:Linux安装及命令入门