一. 打开文件

f = open("db","r",encoding="utf8")

  1. r:只读
  2. w:只写,会先清空文件
  3. a:追加
  4. x:如果文件存在,则报错,否则,创建文件并只写
  5. b:上面的参数都可以加“b”,意思是以二进制形式打开文件,读取写入的都是字节,就不需要考虑“encoding”啦
  6. encoding="utf8":告诉python解释器用utf8进行转码,当我们读取字符串时解释器会将字节转换成字符串,当我们写入字符串时解释器会把字符串自动转换成字节,这个过程是python解释器完成的,我们只要确保文件打开时的编码和文件保存时的编码保持一致就行
  7. +:r+,w+,a+,x+都是读写,但是我们一般用r+,因为,w+会先清空文件,a+是追加,x+文件存在会报错
  8. 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打开文件

二. 操作文件

  1. read(): 无参数,读全部;有参数(n),文件打开加b的话读取n个字节,无b的话读取n个字符
  2. tell():  获取当前指针的位置(字节)
  3. seek():指针跳到指定位置(字节)
  4. write():写数据,文件打开加b的话,写字节;无b的话,写字符
  5. fileno():文件描述符
  6. flush():从内存刷到硬盘
  7. readable():文件可读返回True,否则False
  8. readline():读取一行
  9. truncate():截断文件,会把指针之后的内容全部删除
  10. for line in f:循环文件每一行
  11. 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相关推荐

  1. Python升级之路( Lv9 ) 文件操作

    Python系列文章目录 第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础 第七章 面向对象深入 第八章 异常机制 第九章 ...

  2. 【Python成长之路】如何用python开发自己的iphone应用程序,并添加至siri指令

    哈喽大家好,我是鹏哥. 今天想记录的学习主题是 -- 基于pythonista3 app开发自己的iphone应用程序. ~~~上课铃~~~ (由于今天被小伙伴推荐了这首歌,因此就应他的要求,作为此文 ...

  3. Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程–>错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个人 ...

  4. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  5. 【Python成长之路】破解Boss直聘网站滑块验证

    哈喽大家好,我是鹏哥. 今天要记录的内容是 -- 破解Boss直聘网站的滑块验证. -- 上 课 铃-- TuesdayBurak Yeter;Danelle Sandoval - Tuesday 1 ...

  6. 【Python成长之路】如何用2行代码将抖音视频设置成我的手机铃声

    哈喽大家好,我是鹏哥. 今天想学习记录的内容是 -- 如何用python提取视频中的音频. ~~~上课铃~~~ 1 写在前面 本来按我的性子和精力,一周一般只想写一篇博客:但是今天在刷抖音时,发现有个 ...

  7. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

  8. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  9. python开发_xml.etree.ElementTree_XML文件操作

    python开发_xml.etree.ElementTree_XML文件操作_该模块在操作XML数据是存在安全隐患_慎用 xml.etree.ElementTree模块实现了一个简单而有效的用户解析和 ...

最新文章

  1. 用高中数学理解AI “深度学习”的基本原理
  2. 关闭Windows不必要服务,电脑更安全
  3. django中的ajax_post请求
  4. 谈谈微服务中的 API 网关(API Gateway)
  5. CSS3属性box-shadow使用教程
  6. 傅里叶变换性质证明卷积_图傅里叶变换
  7. 软件项目架构简单总结
  8. HDU-1212-Big Number【大数】
  9. qq音乐服务器的位置,QQ音乐的歌曲真实地址解析
  10. 基于JavaEye-API实现的Gerry-聊天QQ版v1.0 (全)
  11. 微信企业号回调模式 java_java微信企业号开发之开发模式的开启
  12. 基于JAVA小微企业人事管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  13. 数学形态学之腐蚀算法
  14. xxxxxlllllxl的专栏 链接,很多实际动手操作的东西
  15. 容错服务器ftserver网卡状态,容错服务器ftServer260045006300技术规格
  16. Springboot毕设项目汽车美容店管理系统q5x50java+VUE+Mybatis+Maven+Mysql+sprnig)
  17. Java黑皮书课后题第4章:*4.21(检查SSN)编写一个程序,提示用户输入一个社保号码(格式是DDD-DD-DDDD,D是1个数字)你的程序应该判断输入是否合法
  18. (六)Spring之回顾工厂模式
  19. python发微信-python实现向微信用户发送每日一句
  20. 埃斯顿三轴机器人编程_博世力士乐:埃斯顿机器人(手腕+小臂)装配线

热门文章

  1. 设计模式学习笔记-观察者模式(转)
  2. AES和TKIP的区别
  3. 第十届中国信息安全大会召开 主打安全创新
  4. 用 API 提取、写入指定网站的 Cookie - 回复 bangrj 的问题
  5. POJ2528 计算可见线段(线段树)
  6. Windows 环境下安装redis 及其PHP Redis扩展
  7. Angular2视图操作之ViewChildViewChildren
  8. C#里的委托和事件实现 (转)
  9. [Linux]lnmp一键安装包,访问yii/tp5/laravel的时候,报错500或者空白页面
  10. 20165301 预备作业三:Linux安装及命令入门