Python 全栈开发八 文件处理
一、基本流程
- 打开文件得到文件句柄
- 将文件句柄赋值给一个变量
- 通过文件句柄对文件进行操作
- 关闭文件
二、基本操作
1、文件句柄
f = open("a.txt",encoding="utf-8") #f为文件句柄,通过文件句柄我们进行操作
data = f.read()
'''
该操作是在内存中运行:读取硬盘中的文件,即将二进制读取出来
所以要提供编码方式,因为存入的时候是以utf-8编码的,所以在
读取时要使用utf-8
'''
2、文件读写编码问题
在读的时候:指定打开编码,该编码与写入文件的编码需要一样否则会乱码
在写的时候:指定写的编码,不能使用不同的编码,否则打开的时候容易乱码
3、文件的读写模式
只读模式:默认就为只读模式
f = open("a.txt","r",encoding="utf-8")
data = f.read()
f.readable() #判断一个文件是不是可读
f.close() #打开文件后必须关闭文件
读取一行和读取多行
读取一行
f = open("a.txt","r",encoding="utf-8")
data2 = f.readline()
print(f.readline(),end="")
'''
注意:在同一个文件句柄中,是一行一行读,读取完后
光标的在文件最后的。同时在读取的时候会出现换行现
象,可以在打印的时候加上end = ""来取消换行
'''
f.close() #打开文件后必须关闭文件
读取多行
f = open("a.txt","r",encoding="utf-8")
data3 = f.readlines() #读取文件的所有行,并且以列表的形式表现出来
f.close() #打开文件后必须关闭文件
只写模式:写的参数必须为字符串,不能为其他类型
f = open('yesterday2.txt','w',encoding='utf-8') # 只写模式,若文件存在则会覆盖,若文件不存在,则创建一个文件
f.write('I love you')
以列表的形式写入多行:
f = open("b.txt","w",encoding="utf-8")
f.writelines(["aaa\n","bbb\n","ccc\n"]) #以列表的形式写入多行
f.close()
追加操作:
f = open('yesterday','a',encoding='utf-8') #追加,也可读,不存在则创建,存在则在末尾追加,只能在末追加
f.write('I love you')
f.close()
打开文件的第二种形式:
#常用的打开文件方式,在对文件进行操作的时候要在with内部
with open('yesterday','r',encoding='utf-8') as f,\
open('yesterday.txt','r',encoding='utf-8') as f2: #这种方式打开文件会自动关闭,而且可以同时打开多个文件
f.read()
文件的b模式:
rb模式:
'''
bytes读写优点:处理图片,视频等文件等
''' #rb读
# f = open("a.txt","rb",encoding="utf-8") b的方式不需要指定编码,以为硬盘存的就是二进制 #存取过程 字符串------>encode()------->bytes
#读取过程 bytes------>decode()------->字符串 f = open("a.txt","rb")
data = f.read()
f.close() #wb写 f1 = open("b.txt","wb") #写wb指以bytes写
# f.write(b"aaaa\n") #写的时候必须是bytes类型,不能用这种方式,因为没有指定编码方式
f.write(bytes("aaaaa",encoding="utf-8")) #指定以什么编码方式,变成bytes类型的
f.writelines("aaaaa".encode("utf-8")) #这种方式也可以 #ab写: f2 = open("b.txt","ab") #在写的时候,写到最后一行
f.write("aaaaa".encode("utf-8"))
+默式:
#只写模式
f = open('yesterday','r+',encoding='utf-8')
f.read() #若是先读再写,则是在文件内容后面追加,即从光标上写
f.write('maibeyby') #是直接写,则是从开头写,把原来内容覆盖,而不是挤出去
f.close() # f = open('yesterday','w+',encoding='utf-8') #写读模式,必须先写入,在把光标移至开始才能读,没什么用
# f.write('i love you')
# f.seek(0)
# print(f.read()) # f = open('yesterday','a+',encoding='utf-8') #在追加中增加可读模式
# f.seek(0)
# print(f.read())
# f.write('\ni love you1')
文件处理其他方法:
'''
在Windows中换行为\r\n,而pyhon解析出来的是\n,这是Python里面经过
处理了,这样是为了避免不同操作系统的换行不一样而处理的,要想显示其
原本的换行符,在打开文件的时候加上newline=""
'''
f = open("c.txt","w",encoding="utf-8",newline="")
# f.encoding #显示文件打开的编码
'''
我们写的数据是存在内存上,不会马上存入硬盘,使用flush()可以马上将它存
入硬盘,操作系统会每隔一段时间使用一下flush()。
'''
f.flush() #将内存的数据刷到硬盘上
fl = open("a.txt","r+",encoding="utf-8")
'''
文件光标处理:
除了read()以外,read读取的是字符,其他方法的光标是以字节为单位的
'''
print(fl.tell() ) #先显示当前光标位置 0
print(fl.readline()) #读取一行
print(fl.tell()) #显示光标所在的位置, 32
fl.seek(0) #可以控制光标的为在0是按字节的方式
Python 全栈开发八 文件处理的更多相关文章
- python全栈开发-Day7 文件处理
python全栈开发-Day7 文件处理 一 .文件操作 一 .介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必 ...
- python全栈开发_day8_文件的多种读写方式及游标
一:文件的多种读写方式 主方式:w r a 从方式:t b + 了解方式:x u 1)按t(按照字符进行操作): with open("data_1.txt& ...
- python全栈开发学习_内容目录及链接
python全栈开发学习_day1_计算机五大组成部分及操作系统 python全栈开发学习_day2_语言种类及变量 python全栈开发_day3_数据类型,输入输出及运算符 python全栈开发_ ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【基础一】
Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- Python 全栈开发【第0篇】:目录
Python 全栈开发[第0篇]:目录 第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
随机推荐
- c语言中的左移和右移
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...
- SQL中的between and
"between xx and xx "在SQL中的用法 这个大家都很熟悉,但是当问到是否包含两端的值时,就有点儿不确定了.在W3School网站上,有这样的一段话: 参考:ht ...
- CodeForces 1099E - Nice table - [好题]
题目链接:https://codeforces.com/problemset/problem/1099/E You are given an $n×m$ table, consisting of ch ...
- [No0000161]IDEA初步接触
安装 参考https://blog.csdn.net/qq_35246620/article/details/61191375 安装过程全程默认(路径和快捷方式自定义,不需要下载jre): 启动后全程 ...
- 远程登录oracle 12.2数据库报错ORA-28040解决办法
今天新安装的oracle 12.2.0.1数据库,通过本地sqlplus远程登录12c数据库报错ora-28040,如下: ORA-28040: No matching authentication ...
- Angular4 —— NgModule
http://www.cnblogs.com/dojo-lzz/p/5878073.html
- RabbitMQ 分布式设置和高可用性讨论
abbitMQ的集群主要有配置方式,分别是:本地局域网Cluster,federation,shovel. RabbitMQ Cluster主要是用于同一个网段内的局域网. federation和sh ...
- iphone及ipad屏幕尺寸参考
初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS也保持不变.那时编写iOS的App(应 ...
- 线上bug处理
http:response X-Frame-Options是什么? x-frame-options是一个HTTP响应头,用来告诉浏览器这个网页是否可以放在iframe内. x-frame-option ...
- goreplay,tcpcopy
流量拷贝工具试用 https://github.com/buger/goreplaynginx mirror openresty 通过lua tcpcopy 支持 HTTP 请求的录制和重放,可以在线 ...