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 ...
随机推荐
- kafka在zookeeper上的节点信息和查看方式
kafka在Zookeeper上的节点如下图: 该图片盗自大牛的博客http://blog.csdn.net/lizhitao/article/details/23744675 服务端开启的情况下,进 ...
- include_once与require_once的区别
①作用及用法 可以减少代码的重复 include(_once)("文件的路径")与require(_once)("文件的路径") ②理解 说白了,就是用包含进 ...
- html表格的基本用法
表格的基本用法 1.<!DOCTYPE html><html><head lang="en"> <meta charset="U ...
- Spark RDD Transformation 简单用例(二)
aggregateByKey(zeroValue)(seqOp, combOp, [numTasks]) aggregateByKey(zeroValue)(seqOp, combOp, [numTa ...
- CCPC-Wannafly Winter Camp Day1 Div1 - 爬爬爬山 - [最短路][堆优化dijkstra]
题目链接:https://zhixincode.com/contest/3/problem/F?problem_id=39 样例输入 1 4 5 1 1 2 3 4 1 2 1 1 3 1 1 4 ...
- [No0000C5]VS2010删除空行
VS2010删除空行,查找内容:^:b*$\n,替换为:,查找范围:当前文档,使用:正则表达式
- 【单调栈】hdu 6319 杭电多校Problem A. Ascending Rating
http://acm.hdu.edu.cn/showproblem.php?pid=6319 从后往前更新,维护一个递减单调栈(队列) 最近很多题都是单调栈... #define _CRT_SECUR ...
- Gif动态图UIImage
#pragma mark 动态图生成 -(UIImage *)getAnimatedGIFWithData:(NSString *)path { NSData *data = [NSData data ...
- ArcGIS API for JavaScript
以3.14版本为例: 1.部署环境: 下载:https://developers.arcgis.com/downloads/apis-and-sdks?product=javascript# 部署:h ...
- LeetCode 748 Shortest Completing Word 解题报告
题目要求 Find the minimum length word from a given dictionary words, which has all the letters from the ...