Python中文件的读写操作
文件操作基本流程:
1. 介绍
计算机系统是由计算机硬件,操作系统,和应用程序三部分组成.
内存 存放不持久
硬盘 可以使数据持久化
文件操作 数据持久化的一种
全栈开发 框架类
2. 文件的操作流程
打开文件, 得到文件句柄并赋值给变量
f = open("a.txt","r",encoding="utf-8")
通过句柄对文件操作
data=f.read()
关闭 文件
f.close()
只读操作(**r, **rb)
f = open("护士少妇嫩模.txt",mode="r",encoding="utf-8")
content = f.read()
print(content)
f.close()
rb 读出来的数据是bytes类型,在rb模式下,不能选择encoding.
rb的作用:在读取非文本文件的时候. 比如图片,MP3,视频等就需要用到rb.因为这种数据没办法直接显示出来.
f = open("护士少妇嫩模.txt",mode="rb")
content=f.read()
print(content)
f.close()
读取文件的方法:
read() 是将文件中所有的内容读出来
read(n) 是读取n个字符.
比如: 友谊地久天长
read(3) 结果就是 "友谊地" 把前三个字读出来. 需要注意的是,如果再次读取, 会在当前位置继续往后读,而不是从头开始读. 例如,再来一个read(3) 得到的结果就是 "久天长"
如果是rb模式, 就是读3个字节
readline() 一次读取一行数据. 注意:每次读取出来的数据都会有一个换行符 \n, 我们要使用strip()方法去掉\n
readlines()将一行形成一个元素,放到一个列表中. 占内存 不推荐使用.
*** 循环读取, 每次读一行内容. 不会产生内存溢出
f = open("a.txt",mode="r",encoding="utf-8")
for line in f:
print(line.strip())
f.close() 一定要注意关闭
写模式(**w,wb)
写的时候,如果没有文件,就会先创建文件; 如果文件存在就会将原来的内容先删除, 再写入新的内容.
f = open("小娃娃.txt",mode="w",encoding="utf-8")
f.write("金毛狮王")
f.flush() #刷新
f.close()
wb模式: 可以不指定打开文件的编码,但是在写入文件的时候必须把字符转换成"utf-8"
f = open("小娃娃.txt",mode="wb")
f.write("金毛狮王", encoding("utf-8"))
f.flush() #刷新
f.close()
追加(**a,ab)
在追加的模式下,写入的内容会追加在文件的结尾
f = open("小娃娃",mode="a",encoding="utf-8")
f.write("马化腾")
f.flush()
f.close()
读写模式(**r+, r+b)
读写模式必须是先读. 因为默认光标在开头,读完之后再写入. r+模式是以后使用频率最高的.
f = open("小娃娃",mode="r+",encoding="utf-8")
content = f.read()
f.write("马化腾的汽车") #会接着原来的内容继续往后写,没有换行
print(content)
f.flush()
f.close()
写读模式(w+, w+b )
先将所有的内容清空,然后写入,最后读取. 但是读取的内容是空的. 不常用.
追加读(a+)
a+模式下,不论是先读还是后读,都读取不到数据.
追加都是在最后的位置,先读的话,后面没内容,读不出来, 如果写完再读,光标还是在最后 ,还是读不到内容.
***其他操作
1. **seek() seek(n)光标移动到n位置,注意,移动的单位是byte,如果是utf-8中文部分要是3的倍数
**移动到开头: seek(0)
移动到结尾: seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头, 1表示当前位置, 2表示结尾
f = open("小娃娃",mode="r+",encoding="utf-8")
f.seek(0) #光标移动到开头
content = f.read() #读取内容,此时光标移动到结尾
print(content)
f.seek(0) #再次将光标移动到开头
f.seek(0,2) #将光标移动到结尾
content2 = f.read() #读取内容, 什么都没有
print(content2)
f.seek(0) # 移动到开头
f.write("张国荣") #写入信息 会把之前有的信息覆盖掉. ,此时光标在9, 中文3*3个=9
f.flush()
f.close()
2. tell() 帮忙找到当前光标的位置
f = open("小娃娃",mode="r+",encoding="utf-8")
f.seek(0) #光标移动到开头
content = f.read() #读取内容,此时光标移动到结尾
print(content)
f.seek(0) #再次将光标移动到开头
f.seek(0,2) #将光标移动到结尾
content2 = f.read() #读取内容 什么都没有
print(content2)
f.seek(0) #移动到开头
f.write("张国荣") #写入信息,此时光标在9
print(f.tell()) #光标位置9
f.flush()
f.close()
3. truncate()截断文件
#truncate() 截断文件
f = open("小娃娃",mode="w",encoding="utf-8")
f.write("哈哈") #写入2个字符
f.seek(3) #光标移动到3, 也就是两个字的中间
f.truncate() #删除光标后面的所有内容
f.close()
f = open("小娃娃",mode="r+",encoding="utf-8")
content=f.read(3) #读取12个字符
f.seek(4) #移动4个byte
print(f.tell())
f.truncate()#后面的所有内容全部删除
f.flush()
f.close()
注意:在r+模式下,如果读取了内容,不论读取多少,光标显示的是多少,再写入或者其他操作文件的时候, 都是在结尾进行的.
***修改文件
文件修改:只能将文件中的内容读取到内存中,将信息修改完毕,然后将源文件删除,将新文件名修改成老文件名
##文件修改
import os
with open("小娃娃",mode="r",encoding="utf-8") as f1,\
open("小娃娃_new",mode="w",encoding="utf-8") as f2:
content = f1.read()
new_content = content.replace("冰糖葫芦","大白梨")
f2.write(new_content)
os.remove("小娃娃") #删除源文件
os.rename("小娃娃_new","小娃娃") #重新命名新文件
弊端:一次将所有内容读出来,内存溢出. 可以一行一行读取.
import os
with open("小娃娃",mode="r",encoding="utf-8") as f1,\
open("小娃娃_new",mode="w",encoding="utf-8") as f2: for line in f1:
new_line = line.replace("冰糖葫芦","大白梨")
f2.write(new_line) os.remove("小娃娃") #删除源文件
os.rename("小娃娃_new","小娃娃") #重新命名新文件
Python中文件的读写操作的更多相关文章
- 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)
目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...
- Python中文件的读写操作的几种方法
对文件的操作,步骤为:打开一个文件-->读取/写入内容-->保存文件 文件读写的3中模式 # 1.w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写 ...
- 『无为则无心』Python基础 — 42、Python中文件的读写操作(二)
目录 (5)文件对象方法(重点) 1)写方法 2)读方法 3)seek()方法 4)tell()方法 (6)关闭 (7)综合练习:读取大文件 (5)文件对象方法(重点) 1)写方法 @1.语法 对象对 ...
- kernel中文件的读写操作可以使用vfs_read()和vfs_write
需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...
- (六)kernel中文件的读写操作可以使用vfs_read()和vfs_write
需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...
- python中文件的基础操作
打开文件的三种方式: open(r'E:\学习日记\python\code\文件的简单操作.py') open('E:\\学习日记\\python\\code\\文件的简单操作.py') open(' ...
- python 中文件夹的操作
文件有两个管家属性:路径和文件名. 路径指明了文件在磁盘的位置,文件名原点的后面部分称为扩展名(后缀),它指明了文件的类型. 一:文件夹操作 Python中os 模块可以处理文件夹 1,当前工作目录 ...
- Python中文件路径名的操作
1 文件路径名操作 对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名.Pyth ...
- Python对文件的读写操作
Python使用open函数来读写文件,open函数的第一个参数是文件名,第二个参数是可选的,有4种常见模式:(1)r 打开一个文件来读数据,这是默认模式:(2)w 打开一个文件来写数据,如果文件已有 ...
随机推荐
- OpenExpressApp:精通 WPF UI Virtualization
原文:OpenExpressApp:精通 WPF UI Virtualization 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提升 OEA 框架中 Tre ...
- 将自定义控件加载到RichTextbox并进行交互
先前遇到一个问题,将自定义控件加载到RichTextbox后,无法触发自定义控件的各种事件,最终找到解决办法:设置RichTextbox的IsDocumentEnabled="True&qu ...
- Win8MetroC#数字图像处理--2.2图像二值化函数
原文:Win8MetroC#数字图像处理--2.2图像二值化函数 [函数代码] /// <summary> /// Binary process. /// </summary> ...
- 安装CUDA和cuDNN
GPU和CPU区别 1,CPU主要用于处理通用逻辑,以及各种中断事物 2,GPU主要用于计算密集型程序,可并行运作: NVIDIA 的 GeForce 显示卡系列采用 GPU 特性进行快速计算,渲染电 ...
- Android零基础入门第21节:ToggleButton和Switch使用大全
原文:Android零基础入门第21节:ToggleButton和Switch使用大全 上期学习了CheckBox和RadioButton,那么本期来学习Button的另外两个子控件ToggleBut ...
- Android零基础入门第54节:视图切换组件ViewSwitcher
原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ...
- oracle 12c连接pdb
12c中,如何连接pluggable database: 使用默认的service连接pdb,创建pdb之后,在监听中自动添加以pdb为名的service: 用户在cluster中创建service, ...
- UAC就不能一次添加、永久信任吗?
每次都要点击确定,感觉好麻烦. 而且阻碍了某些功能的实现.
- 【码云周刊第 23 期】Web 高效开发必备的 PHP 框架(从这里学起)good
码云项目推荐 1.项目名称:多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合好,开源供亲们参考,如 Auth 权限管理.支 ...
- OpenSSL的命令行用法,以及参数大全
c:\openssl\bin>opensslOpenSSL> versionOpenSSL 1.0.2j 26 Sep 2016OpenSSL> https://wiki.opens ...