python的open函数使用
在python中使用open函数对文件进行处理。
1.open()
python打开文件使用open()函数,返回一个指向文件的指针。该函数常用以下三个参数。
1.1 参数1
目标文件的路径+名字。最好使用r"路径"这种原始字符串写法,防止有转义字符影响实际路径。
1.2 参数2
操作文件的方式mode=‘方式’。mode=可以省略。下面对操作文件的方式进行详细说明:
(1)r
以只读方式打开文件。文件的指针将会放在文件的开头。这是open默认模式。如果文件不存在,会报错。
(2)rb
以二进制只读方式打开一个文件。文件指针将会放在文件的开头。注意这种方式不能使用encoding,不然会报错。
同样的内容使用一般方式和二进制的方式打开。
fp = open(r"E: est.txt",'r',encoding='utf-8')
content = fp.readline()
print(content)
输出:加油,好好干!
fp = open(r"E: est.txt",'rb')
content = fp.readline()
print(content)
输出:b’???21???¥??¥??12???’
(3)r+
以读写方式打开一个文件。文件指针将会放在文件的开头。直接写入会覆盖文件开头的内容。
原始内容:
加油,好好干!别放弃
fp = open(r"E: est.txt",'r+',encoding='utf-8')
fp.write("开心吧")
fp.close()
fp = open(r"E: est.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
执行后:
开心吧好好干!别放弃
(4)rb+
以二进制读写方式打开一个文件。文件指针将会放在文件的开头。
(5)w
以写入打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
(6)wb
以二进制写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
(7)w+
以读写方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
原始内容:
开心吧好好干!别放弃
fp = open(r"E: est.txt",'w+',encoding='utf-8')
fp.write("认真一点")
fp.close()
fp = open(r"E: est.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
执行后直接覆盖所有原始内容:
认真一点
(8)wb+
以二进制读写格式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
(9)a
以追加方式打开一个文件。如果文件已存在,文件指针将会放在文件结尾。即:新的内容将会被追加到已有的内容之后。如果该文件不存在,则创建新文件可用于写入。注意,不能读,读会出错。
(10)a+
以读写方式打开一个文件。如果文件已存在,文件指针将会放在文件结尾。即:新的内容将会被追加到已有的内容之后。如果该文件不存在,则创建新文件可用于读写。
原始内容:
认真一点
fp = open(r"E: est.txt",'a+',encoding='utf-8')
fp.write("你就离成功近一点")
fp.close()
fp = open(r"E: est.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
执行后追加:
认真一点你就离成功近一点
这时候,指针放在文件尾部,直接读取会没有内容,需要将指针移动(seek)到文件的头部:
with open(r"E: est.txt",'a+',encoding='utf-8') as fp:fp.seek(0,0)content = fp.readline()print(content)
(11)ab+
以二进制读写方式打开一个文件。如果文件已存在,文件指针将会放在文件结尾。即:新的内容将会被追加到已有的内容之后。如果该文件不存在,则创建新文件可用于读写。
1.3 参数3
编码的方式,常用utf-8,gbk等。如:encoding=‘utf-8’
如果是二进制的方式,这个参数不需要填,填了还会报错。
2.with open() as
这是open()的一种升级用法,控制块结束的时候文件会自动关闭,不需要显示地调用close()关闭文件。这种方法更方便使用,所以推荐大家使用这种方法。
with open(r"E: est.txt",'r',encoding='utf-8') as fp:content = fp.readlines()
3.open函数常用的方法
3.1 读
文件内容:
认真一点你就离成功近一点
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff
(1)read()
一次性读取整个文件内容,将整个文件放到一个字符串中。使用read(size)方法,返回文件中的前size个字符:
content = fp.read()
输出:
认真一点你就离成功近一点
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff
(2)readline()
每次读取一行内容。
content = fp.readline()
输出:
认真一点你就离成功近一点
(3)readlines()
一次性读取整个文件内容到一个迭代器以供我们遍历(读取到一个list中,以供使用,比较方便)
content = fp.readlines()
输出;
[‘认真一点你就离成功近一点 ’, ‘啊啊啊啊啊啊啊啊啊啊啊 ’, ‘fffffffffff’]
3.2 写
(1)write()
fp.write()的参数必须是一个字符串,就是你要写入文件的内容.
(2)writelines()
fp.writelines()的参数可以是列表,也可以是字符串。
3.3 获取文件读写类型
如果文件可写,则 fp.writable() 方法返回 True,否则返回 False。
如果文件是可读的,则 fp.readable() 方法返回 True,否则返回 False。
比如:以w方式打开的文件,fp.readable()返回False,fp.writable()返回True。
3.4 指针移动
seek
f.seek(偏移量,[起始位置])
起始位置的三种取值:0文件开头,1当前位置,2文件末尾
例子见1.3中(10)a+
3.5 当前指针位置
tell()返回一个整数,表示当前文件指针的位置(就是到文件头的字节数).
如果是utf-8编码,那么一个中文字符占用三个字节,一个英文字符占用一个字节。如果是gbk编码,那么一个中文字符占用两个字节,一个英文字符占用一个字节。
with open(r"E: est.txt",'a+',encoding='utf-8') as fp:content = fp.tell()print(content)
打印:30
3.6 truncate
truncate(size) 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
python的open函数使用相关推荐
- python turtle画滑稽_使用python的turtle函数绘制一个滑稽表情的方法
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- python的popen函数
最近了解了一下python的popen函数的使用,主要是用来执行linux命令 函数使用 使用之前需要导入import os模块 使用方式: os.popen(cmd) 返回值: 返回一个文件句柄 i ...
- python中pop函数_Python中的Pop函数
python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...
- Python培训:Python有哪些函数?你了解几种?
本期小编要为大家带来的Python教程就是关于Python函数这方面的,我们都知道Python函数,一般是指组织好的.可重复使用的.用来实现单一或相关联功能的代码段,Python函数包含系统中自带的一 ...
- 详细记录python的range()函数用法
详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...
- 技术图文:举例详解Python中 split() 函数的使用方法
背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...
- 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- 为什么Python没有main函数?
作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...
- Python高阶函数使用总结!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约2000字,建 ...
- 为什么 Python 没有 main 函数?
作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...
最新文章
- java aio事件模型_IO模型之AIO代码及其实践详解
- Element-UI 的基本使用||基于图形化界面自动安装
- cstatic 不调用onpaint_干货 | U盘中毒?不可能的事
- Ouroboros:一个可证明安全的PoS区块链协议 (共识介绍)
- SAP CRM WebClient UI和Hybris backoffice UI开发的相同点
- python惰性求值的特点_C#教程之C#函数式编程中的惰性求值详解
- app传输数据到php,安卓app客户端和使用php的服务器端数据交互
- 解决phpmailer可以在windows下面发送成功, 在linux下面失败的问题
- iOS中 Bugly iOS 符号表手动配置详细教程 韩俊强的博客
- openwrt多拨插件_折腾小日记三:爱快PKopenwrt多拨实测
- amlogic_android7.1的s905x平台长按按键5s清除数据和缓存的实现思路
- vc++ 6.0 三次bezier曲线绘制_Python matplotlib绘制散点图
- 网络工程师--网络安全与应用案例分析
- 【蓝牙串口无线烧写程序】适用于STM32F103和STM32F107的Bootloader
- sdk前置服务器 设备和商户信息不匹配,豌豆荚融合SDK接入常见问题
- 高斯投影坐标正反算公式
- 网站运营如何做好活动策划(转载)
- qt使用assimp加载模型_iOS使用assimpKit加载FBX模型步骤详解
- 解析button和input type=button 的区别
- 深入了解 Animation Scripting 动画脚本
热门文章
- 【华为OD机试真题】完美走位(python)100%通过率 超详细代码注释 代码解读
- RAID0 RAID1 RAID5 RAID10 RAID50
- MySql 实现递归with recursive
- GDLink+Keil5在线仿真时提示cannot Load Flash Programming Algorithm的解决办法
- 两种数据格式(Parquet/ORCfile)浅析
- tailf报错limit of inotify watches was reached
- licode服务端总结
- 微信小程序 tab切换展示不同的内容
- 运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView
- 【ROS2机器人入门到实战】