Python 基础之文件操作与文件的相关函数
一.文件操作
fp =open("文件名",mode="采用的模式",encoding="使用什么编码集")
fp 这个变量接受到open的返回值 是一个文件io对象 (又称文件句柄)
i => input 输入
o => output输出
有了对象之后,就可以使用对象.属性 或者 对象.方法进行操作
fp.write("字符串")
fp.close() #关闭文件
fp.read() #读取内容
1.文件的写入和读取
#(1)文件的写入
#打开文件
fp = open("test.txt",mode='w',encoding='utf-8') #把冰箱门打开
#写入文件
fp.write("把大象放进去")
#关闭文件
fp.close()
#创建了test.txt文本且文本内容如下:
#(2)文件的读取
#打开文件
fp = open("test.txt",mode='r',encoding='utf-8') #把冰箱门打开
#读取文件
res = fp.read()
#关闭文件
fp.close()
print(res)
#会输出:大象放进去
2.将字符串和字节流(Bytes流)类型进行转换
(参数写成转化的字符编码格式)
#encode() 编码 将字符串转化为字节流(Bytes流)
#decode() 解码 将Bytes流转化为字符串
#(1)
strvar = "今天"
bt = strvar.encode("utf-8") #编码称成节流
print(bt)
res2 = bt.decode("utf-8") #解码成字符串
print(res2)
#输出的结果为:
#(2)wb 和 rb 模式 二进制字节流模式 (注意点:使用字节流模式的时候,不要指定encoding)
#文件的写入
#例1:
fp = open("test.txt",mode="wb")
strvar = "好晴朗"
res = strvar.encode("utf-8")
fp.write(res)
fp.close()
#如果没有test.txt文本会创建一个并把”好晴朗”写入文件中.
#文件的读取
#例2:
fp = open("test.txt",mode="rb")
#读取文件
res = fp.read()
fp.close()
print(res)
res2 = res.decode("utf-8")
print(res2)
#因为例1写入:好晴朗 输出的内容是分别是没有解码的”好晴朗”的二进制流和解码后的内容
#(3)复制图片 (图片或视频之类的二进制字节流的内容,都可以使用b模式,比如wb,rb...)
#打开文件
fp = open("ceshi.png",mode="rb")
#读取文件
res = fp.read()
#关闭文件
fp.close()
#打开文件
fp = open("ceshi2.png",mode="wb")
#写入文件
fp.write(res)
#关闭文件
fp.close()
3.扩展模式 + w+ r+ a+
#(utf-8 编码格式下 默认一个中文三个字节 一个英文或字符 占用一个字节)
#read() 功能:读取字符的个数(里面的参数代表字符个数)
#seek() 功能:调整指针的位置(里面的参数代表字节个数)
#tell() 功能:当前光标左侧所有字节数(返回字节数)
把光标移动到文件行首
fp.seek(0)
把光标移动到文件末尾
fp.seek(0,2)
#(1)r+ 可读可写 (先读后写)
fp = open("0506_3.txt",mode="r+",encoding="utf-8")
res = fp.read()
#print(res) #先读出文件有什么内容
fp.write("e") #从光标的位置写入内容
#把光标移动到第0个字节上,那就是文件开头
fp.seek(0) #将文件的光标移动到开头
res = fp.read() #从光标的位置开始读取文件内容
print(res)
fp.close()
#(2)r+ 可读可写 (先写后读)
fp = open("0506_3.txt",mode="r+",encoding="utf-8")
#把光标移动到文件末尾
fp.seek(0,2)
fp.writelines("123")
fp.seek(0)
res = fp.read()
print(res)
fp.close()
#(3)w+ 可读可写 (没有文件的话,会自动创建)
fp = open("0506_4.txt",mode="w+",encoding="utf-8")
fp.write("123456")
fp.seek(0)
res = fp.read()
print(res)
fp.close()
#(4)a+ 可读可写 append (写入的时候,强制把光标移动到最后)
fp = open("0506_4.txt",mode="a+",encoding="utf-8")
fp.seek(0)
fp.write("444444")
fp.seek(0)
res = fp.read()
print(res)
fp.close()
#(5)tell read seek 注意 seek 括号里的字节数 read 括号里的字节数
fp = open("0506_4.txt",mode="a+",encoding="utf-8") #当前光标在内容的最后一个
res = fp.tell() #从光标左侧所有字节数,
print(res) #内容为:123456789 光标在9的后面,所以输出9
fp.seek(5) #将光标跳到第五个字节,
res = fp.tell() #所以光标在12345
print(res) #6 5和6的位置,所以输出5
res = fp.read(2) #读取2个字符(往后读两个字节)
res = fp.tell() #再次统计字节数(5+2)
print(res) #所以输出7
fp.close()
注意有中文的情况 如果移动错误 有可能读取不出来
#例:
fp =open("0506_4.txt",mode="a+",encoding="utf-8")
res = fp.tell()
print(res)
fp.seek(2)
res = fp.tell()
print(res)
fp.read(2)
res = fp.tell()
print(res)
#当前后面的字符是天 如果用seek移动一个字节
fp.seek(5)
res = fp.tell()
print(res)
res = fp.read()
fp.close()
#(6) with操作 语法 自动关闭文件 相当于帮你执行了fp.close
# as 相当于起别名fp = open("0506_5.txt",mode="w",encoding="utf-8")
#with 是一个代码块 不要落下冒号:
with open("0506_5.txt",mode="w",encoding="utf-8") as fp:
#往文件里面写的内容只能是字符串 或者 字节流
fp.write("123")
最后的内容:123
二.文件的相关函数
1.flush
#刷新缓冲区 flush
#当文件关闭的时候自动刷新缓冲区
#当整个程序运行结束的时候自动刷新缓冲区
#当缓冲区写满了 会自动刷新缓冲区
#手动刷新缓冲区
#例1:
fp = open("0506_6.txt",mode="w+",encoding="utf-8")
fp.write("123445")
#手动刷新缓冲区
fp.flush()
while True:
pass
fp.close()
2.文件对象具有迭代性
#readable() 功能: 判断文件对象是否可读
#writable() 功能: 判断文件对象是否可写
#例1:
fp =open("0506_6.txt",mode="r",encoding="utf-8")
res1 = fp.readable()
res2 = fp.writable()
print(res1) #True
print(res2) #False
for i in fp:
print(i)
文件里面的内容为:
123445
231031
32131y
321y0
3.文件的相关函数
#(1)readline() 功能: 读取一行文件内容
readline(字符数)
如果给的参数大于当前行字符数,只获取当前行所有内容
如果给的参数小于当前行字符数,按照实际给的参数进行字符的获取
#例:
with open("0506_6.txt",mode="r+",encoding="utf-8") as fp:
res = fp.readline(300)
print(res)
#0 0.0 0j False '' [] () set() {} None
#循环打印文件里面每一行的内容
#while res:
#print(res)
#res = fp.readline()
#(2)readlines() 功能:将文件中的内容按照换行读取列表当中
#例:
lst = []
with open("0506_6.txt",mode="r+",encoding="utf-8") as fp:
res = fp.readlines()
for i in res:
res2 = i.strip()
lst.append(res2)
print(lst)
#(3)writelines() 功能: 将内容是字符串的可迭代性数据写入文件中
# 参数:内容为字符串类型的可迭代数据
#例:
with open("0506_6.txt",mode="r+",encoding="utf-8") as fp:
#strvar = "今天天气好晴朗"
lst = ["亲爱的\n","美女\n","请看我\n","一眼\n"]
fp.writelines(lst)
效果如下:
亲爱的
美女
请看我
一眼
# (4)truncate() 功能:把要截取的字符串提取出来,然后清空内容将提取的字符串重新下入文件中(字节)
#例:
with open("0506_6.txt",mode="r+",encoding="utf-8") as fp:
fp.seek(9)
fp.truncate() #截取6个字节的内容重新写入
#效果是剩: 亲爱
注意区分:
read(字符)
readline(字符)
seek(字节)
truncate(字节)
tell返回的是字节
Python 基础之文件操作与文件的相关函数的更多相关文章
- python基础(六)dict字典和文件操作open
字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...
- Python基础之字符编码,文件操作流与函数
一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...
- Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- 用Python的pandas框架操作Excel文件中的数据教程
用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...
- python基础4--文件操作
文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1.open()打开文件 #获取文件句柄 f = open("yesterday" ...
- Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录
Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator // ...
- Python基础—09-文件操作
文件操作 目录管理(os) system:执行系统命令 # 清空屏幕 # os.system('cls') # 弹出计算器程序 os.system('calc') name:查看系统名称 nt:win ...
- C++ 学习笔记之——文件操作和文件流
1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...
- python基础(内置函数+文件操作+lambda)
一.内置函数 注:查看详细猛击这里 常用内置函数代码说明: # abs绝对值 # i = abs(-123) # print(i) #返回123,绝对值 # #all,循环参数,如果每个元素为真,那么 ...
- Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作
本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...
随机推荐
- 二叉树的详细实现 (C++)
二叉树的定义 以递归形式给出的:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的.互不相交的二叉树组成.二又树的特点是每个结点最多有两个子女, ...
- python开发基础01-字符串操作方法汇总
字符串 Python对字符串的处理内置了很多高效的函数,非常方便功能很强大. "hello world" 字符串七种常用功能: 连接和合并 + join 移除空白 strip 分 ...
- Java的JAVA_HOME、Path、CLASSPATH环境变量小结,可以借助这三个的配置去理解Oracle中的那几个环境变量的配置作用
问题:在哪里都能执行java命令,是和JAVA_HOME变量有关系呢还是path中指定的那个java路径呢?? 刚学Java的时候,很多jdk配置教程都要求设置JAVA_HOME.Path.CLASS ...
- VS2017出现不存在从"CString"到"const char*"的适当转换函数
出现不存在从CStrign到const char*的转换,可以将项目属性的字符集设置从"使用Unicode字符集“转换为”使用多字字符集“. 点击”项目“----“属性”----“配置属性” ...
- 松软科技web教程:JavaScript HTML DOM 元素
查找 HTML 元素 通常,通过 JavaScript,您需要操作 HTML 元素. 为了达成此目的,您需要首先找到这些元素.有好几种完成此任务的方法: 通过 id 查找 HTML 元素 通过标签名查 ...
- leetcode 387
Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...
- 解决 上下拉的橡皮筋 和 复制无效 和 ios滑动屏幕定时器停止问题cordova
cordova 安装插件cordova plugin add cordova-plugin-wkwebview-engine@latest --save config.xml 的 <platfo ...
- 【jQuery基础】
" 目录 #. 介绍 1. 优势 2. 版本 3. jQuery对象 #. 查找标签 1. 选择器 /. 基本选择器 /. 层级选择器 /. 基本筛选器 /. 使用jQuery实现弹框 / ...
- [WC2018]即时战略(LCT,splay上二分)
[UOJ题面]http://uoj.ac/problem/349 一道非常好的与数据结构有关的交互题. 首先先看部分分做法, 一上来我们肯定得钦定一个 \(explore\) 的顺序,直接随机就好. ...
- NAT穿透的方式
目前主要的NAT类型有如下几种: 1)Full-cone NAT, also known as one-to-one NAT 一旦一个内网地址 (iAddr:iPort) 被映射到一个外部地址 (eA ...