日常鸡汤:

  人的一生不能总带着一个地方,起码得去各个地方转转


一、初始文件操作:

使用python来读写文件,可以使用open()函数打开一个文件,获取文件句柄,然后通过文件句柄就可以进行各种各样的操作。根据打开的方式不同能够执行的操作也会有相应的差异

二、只读操作(r,rb)

1 f = open("abc.txt",mode='r',encoding='utf-8')
2 content = f.read()
3 print(content)
4 f.close()
5
6
7 #  注意打开 就要有结束  open 之后切记有  close

这里需要注意encoding表示编码集.根据文件的实际情况保存编码进行获取数据,对于我们而言,更多使用的是utf8

rb  读取出来的数据是bytes类型,在rb模式下,不能选择encoding字符集。

1 f = open("abc.txt",mode='rb')
2 content = f.read()
3 print(content)
4 f.close()
5
6
7 # 输出b'aaaaaa\r\nbbbbbb\r\ncccccc'

read()      将文件中的内容全部读取出来 弊端:占内存,如果文件过大,容易导致内存奔溃

read(n)    读取n个字符,需要注意的是,如果再次读取,那么会在当前位置继续去读,而不是从头读。如果使用的是rb模式,则读取出来的是n个字节

readline()  一行一行的读取数据,注意:readline()结尾,注意每次读取出来的数据都会有一个\n,所以,要使用strip() 来去掉\n或者空格

readlines() 讲每一行形成一个元素,放到一个列表中,也是一次性读取,容易出现内存崩溃

循环读取,这种方式是最好的,每次读取一行内容,不会产生内存溢出的问题

 1 f = open('abc.txt',mode='r',encoding='utf-8')
 2 for line in f:
 3     print(line.strip())
 4
 5
 6
 7 # 输出
 8 aaaaaa
 9 bbbbbb
10 cccccc

三、写模式(w,wb)

写的时候,如果没有文件,则会创建文件,如果文件存在,则将原件中原来的内容删除,在写入新的内容

1 f = open('aaa.txt',mode='w',encoding='ust-8')
2 f.write("angasdfasdffsdaf")
3 f.flush()       # 刷新,养成好习惯
4 f.close()
5
6
7 # 创建一个aaa.txt 的文本文档。里面的内容有angasdfasdffsdaf

wb模式,可以不指定打开文件的编码,但是在写文件的时候必须将字符串转化为utf-8的bytes数据

1 f = open('aaa.txt',mode='wb')
2 f.write("你好".encode("utf-8"))
3 f.flush()       # 刷新,养成好习惯
4 f.close()

四、追加

在追加模式下,我们写入的内容会追加在文件的结尾

1 f = open('aaa.txt',mode='a',encoding='utf-8')
2 f.write("马不啊萨芬")
3 f.flush()
4 f.close()

五、读写模式(r+,r+b)

  对于读写模式,必须是先读。因为默认光标在开头的,准备读取的,当读完了之后在进行写入,我们以后使用频率最高的模式就是r+

1 f = open("aaa.txt",mode='r+',encoding='utf-8')
2 content = f.read()
3 f.write("你是我的最爱")
4 print(content)
5 f.flush()
6 f.close()
7
8 # 因为在读取完之后在写入的,所以打印出来的,并没有添加进的那一句,但是文件内容已经被写上了

注意: 在r+ 模式下,必须先是读取,然后在写入 如果顺序出错,则会出现问题

 1 f = open("aaa.txt",mode='r+',encoding='utf-8')
 2 f.write("你是我的最爱")
 3 content = f.read()
 4 print(content)
 5 f.flush()
 6 f.close()
 7
 8
 9
10 #  原文件内容会被覆盖写入,造成原文本的更改

六、写读模式(w+,w+b)

  先将所有的内容清空,然后写入,最后读取,但是读取的内容是空的,不常用,指针在最后所以读取不出来。

七、追加读(a+)

  在a+的模式下,无论是先读的还是后读的,都是读取不到数据的(光标的原因)

八、其他相关操作

1.seek(n) 光标移动到n位置,注意,移动单位是bytes,所以如果是utf-8的中文部分要是3的倍数

2 tell() 可以帮助我们获取到当前光标在什么位置

3.truncate() 截断文件,默认为光标后面的内容全部删除,留光标前的内容

注意:在r+的模式下,如果读取了内容。不论读取内容多少,光标显示的是多少,在写入的时候,都是在末尾进行操作的

转载于:https://www.cnblogs.com/Chamster/p/9295558.html

Python 学习日记 第八天相关推荐

  1. Python学习日记-day1基础篇 字符 输出 注释

    Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...

  2. python学习日记(第一周)

    python学习日记(第一周) 前言: 无论出于什么目的,学个程序语言吧.之前学过一点点基础语法,然后就搁置了两年,日记仅作为个人记录,有问题还望不吝赐教 其实这玩意儿应该每次学一部分记录一部分的,好 ...

  3. Python学习日记-pandas操作学习

    Python学习日记-pandas模块学习 根据需求筛选数据 绘制柱状图-利用pandas绘制 绘制柱状图-利用matplotlib绘制 绘制柱状图-两组数据比较 绘制柱状图-叠加柱状图 绘制饼状图 ...

  4. 菜菜的Python学习日记 | Python类实验代码分享

    系列索引:菜菜的Python学习日记 | Python从入门到入土详解 Python类实验代码分享 编写程序,实现以下功能. (1)创建员工类Employee,属性有姓名name.能力值ability ...

  5. 菜菜的Python学习日记 | 正则表达式你必须了解的知识点

    系列索引:菜菜的Python学习日记 | Python从入门到入土详解 文章目录 常用规则 Python对正则表达式的支持 常用规则 符号 解释 示例 说明 . 匹配任意字符 b.t 可以匹配bat ...

  6. python学习日记2-3周

    python学习日记2-3周 怠惰怠惰 improt 导入 import phone.apple.iphone6 import phone.apple.iphone7 import phone.sam ...

  7. Python学习日记——罗马数字转整数

    Python学习日记004--罗马数字转整数 题目来源:LeetCode题库--罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 ...

  8. [Python学习日记] 文件与文件系统(一)

    [Python学习日记] 文件与文件系统(一) 目录 Python3 File(文件) 方法 open() 方法 file 对象 目录 Python3 File(文件) 方法 open() 方法 Py ...

  9. Python学习日记:求解由四个数字组成的四位数个数

    看见这个问题时,我们很容易想到我们学习过的排列组合知识点:显然用四个数字组成四位数(这些四位数互不相同)就是一个关于排列的问题:用数学的方法可以知道.那么怎么用Python运行解决呢?这就是本次学习日 ...

最新文章

  1. PgSQL · 实战经验 · 如何预测Freeze IO风暴
  2. ::的类名前有个 ,什么意思?
  3. linux专用的opencv下载链接(持续更新)
  4. android imageview 设置网络图片,ImageView加载网络图片
  5. Pytorch解决LSTM前向传播时报错:RuntimeError: input must have 3 dimensions, got 2
  6. jconsole是否可以在生产环境使用_jconsole使用
  7. Linux虚拟内存管理 | 虚拟地址与物理地址映射、段错误SIGSEGV
  8. kettle 驱动位置
  9. Cookie 和 Session 规则
  10. 微信模板消息发送不显示小程序链接的处理
  11. k2p 登录路由器shell失败_斐讯路由器无法进入路由器登录管理界面怎么办
  12. 部署企业级项目管理系统(蝉道)
  13. matlab打开dat形式文件_将matlab中数据保存为txt或dat格式
  14. 面试官最不喜欢不认同的5个跳槽理由
  15. ipv6如何测试服务器已经是ipv6协议,怎么测试域名是否支持ipv6
  16. leedcode每日一题:860. 柠檬水找零
  17. 3-订单持续时间的计算
  18. 【无标题】printf was not declared in this scope
  19. android bp文件_Android 基础 | Android.bp 语法浅析
  20. 【简七理财笔记】第七课:巧用信用卡,该薅的羊毛就要薅

热门文章

  1. 【Android】最近做的一个Android平台下时间统计工具
  2. C++常见面试题之数据结构和算法
  3. Java、Android注解代码生成(ButterKnife原理、ViewBinding)
  4. 关于Swing窗体有时候要放大缩小边框才能显示问题?
  5. vue 函数 路由跳转_vue路由的钩子函数和跳转
  6. Android之横向滑动的广告(网格控件)
  7. netty tcp服务端主动断开客户端_【Netty】服务端和客户端
  8. python绘制直方图显示数字_Python实现绘制双柱状图并显示数值功能示例
  9. list类型的应用场景 —— Redis实战经验
  10. c#获取DataTable某一列不重复的值,或者获取某一列的所有值