1 小序

1.0 功能

打开某个文件,创建一个file对象,调用相关方法进行读写.

1.2 格式:

open(name[, mode[, buffering]])

1.3 参数说明

序号 参数 描述
1 name 文件名
2 mode 操作文件模式
3 buffering 寄存状态,buffering设为0,访问不寄存,为1访问文件寄存,如果为大于1的整数,表明寄存区的缓冲大小

1.4 文件操作模式

序号 模式 描述
1 r 只读模式打开文件,文件的指针在文件开头,即从第一行第一列读取文件内容
2 rb 在二进制格式下以只读模式打开文件,,文件指针放在开头,即从第一行第一列读取文件内容
3 r+ 读写模式打开文件,文件指针在开头
4 rb+ 在二进制格式下以读写模式打开文件,文件指针在文件开头
5 w 以写模式打开文件,文件指针在文件开头,即从文件头开始编辑,原有内容被删除,如果文件不存在,会自动创建文件
6 wb 在二进制格式下以写模式打开文件,如果文件存在,从头开始编辑,原有内容被删除,文件不存在,自动创建文件
7 w+ 读写模式打开文件,文件存在,从头开始编辑,原有内容被删除,文件不存在,自动创建文件
8 wb+ 在二进制格式下以读写模式打开文件,从头开始编辑,原有内容被删除,文件不存在则自动创建文件
9 a 打开文件追加内容,如果文件存在,文件指针放在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件
10 ab 在二进制格式下追加文件内容,文件指针放在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件
11 a+ 以读写模式追加文件内容,文件指针在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件
12 ab+ 在二进制格式下追加文件内容,文件指针在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件

2 文件对象方法

序号 方法 描述
1 read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则出现问题,read()读到文件末尾是返回空字符""
2 radline() 按行读取数据,返回一行数据
3 readlines([size]) 按行读取数据,返回size行的数据列表,size未指定则返回全部行
4 for line in f 通过迭代器访问
5 write(“string”) 写入字符串数据,如果数据格式不是字符串,需要转为字符串格式
6 tell() 返回一个整数,表示当前文件指针的位置,即到文件起始位置的比特数
7 seek(offset,[start]) 移动文件指针,offset为偏移量,单位为bit,可正可负,start为起始位置,0表示文件开始,1当前位置,2文件末尾
8 close() 关闭文件

格式:

# 使用open模式,在文件操作完毕,自动关闭文件
# 避免f.close()忘记的问题
with open('test.txt', 'a') as f:f.read()f.readlines()f.write("xindaqi")

3 案例

datas.txt文件内容

Allocation of 21299200 exceeds 10% of system memory
测试文件
并行操作
穿行操作

3.1 直接遍历open类

with open("./datas/datas.txt", "r") as f:print("open class: {}".format(type(f)))print("open value: {}".format(f))for data in f:print("data type: {}".format(type(data)))print("data: {}".format(data))
  • Result
    包含换行符.
open class: <class '_io.TextIOWrapper'>
open value: <_io.TextIOWrapper name='./datas/datas.txt' mode='r' encoding='UTF-8'>
data type: <class 'str'>
data: Allocation of 21299200 exceeds 10% of system memorydata type: <class 'str'>
data: 测试文件data type: <class 'str'>
data: 并行操作data type: <class 'str'>
data: 穿行操作
  • Analysis
    (1) open打开文件得到的是IO装饰器类,通过for循环可对该类进行遍历;
    (2) 遍历IO装饰器,获取每行数据(字符串);

3.2 文件单行读取

只读一行

with open("./datas/datas.txt", "r") as f:data = f.readline()print("data: {}".format(data))
  • Result
    包含换行符号.
data: Allocation of 21299200 exceeds 10% of system memory

按行读取所有文件

datas = []
with open("datas.txt", 'r') as f1:# 按行读取数据while true:# 去除换行符号a = f1.readline().strip('\n')# 写入列表datas.append(a)# 读到文件最后一行,退出if not a:break
# 列表去除空值
while '' in datas:datas.remove('')
  • Analysis
    (1) readline方法读取open类中的单行数据;
    (2) 需要使用循环遍历每一行数据,将读取的数据存储到list中;

3.3 文件多行提取

with open("datas.txt", "r") as f:datas = f.readlines()print("datas: {}".format(datas))
  • Result
datas: ['Allocation of 21299200 exceeds 10% of system memory\n', '测试文件\n', '并行操作\n', '穿行操作\n']
  • Analysis
    (1) readlines方法从open类中读取所有数据,并直接存储到list中,实现了readline的循环遍历+存储的功能;
    (2) 对readlines方法提取的数据处理和对list处理一致;

3.4 直接读取read

with open("./datas/datas.txt", "r") as f:datas = f.read().strip("\n")print("datas: {}".format(datas))for data in datas:print("data: {}".format(data))
  • Result
datas: Allocation of 21299200 exceeds 10% of system memory
测试文件
并行操作
穿行操作
data: A
data: l
data: l
data: o
data: c
...
data: 穿
data: 行
data: 操
data: 作
  • Analysis
    (1) read方法直接读取文件所有内容,作为一个字符串;
    (2) 遍历该数据即是遍历一个字符串;

3.4 文件写入

# a模式接着上一次结果继续写入
datas = ['xindaqi', 'zhangwenwen']
with open("datas.txt", 'a') as f:for data in datas:# 换行写入f.write(data+'\n')

4 总结

(1) with上下文管理器可对open的状态进行自动监管,当读取完成时可自动管理,无需使用close;
(2) 连续写入数据,使用a及可以实现在文件末尾操作的模式,列表去除空字节,使用remove;
(3) open数据提取有四种方法,直接遍历,read读取,readline读取,readlines读取,详见表4.1;

序号 遍历方法 描述
1 直接遍历 使用循环按照行提取数据
2 read 将所有数据串成一个字符串,提取数据时按照字符串的操作方法
3 readline 按行读取数据,每次只读取一行,需要设置循环遍历
4 readlines 将所有数据按行读取,自动存储至list中,之后按照list操作

[参考文献]
[1]http://www.runoob.com/python/python-func-open.html
[2]https://www.cnblogs.com/hackpig/p/8215786.html


python之open函数相关推荐

  1. python turtle画滑稽_使用python的turtle函数绘制一个滑稽表情的方法

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  2. python的popen函数

    最近了解了一下python的popen函数的使用,主要是用来执行linux命令 函数使用 使用之前需要导入import os模块 使用方式: os.popen(cmd) 返回值: 返回一个文件句柄 i ...

  3. python中pop函数_Python中的Pop函数

    python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...

  4. Python培训:Python有哪些函数?你了解几种?

    本期小编要为大家带来的Python教程就是关于Python函数这方面的,我们都知道Python函数,一般是指组织好的.可重复使用的.用来实现单一或相关联功能的代码段,Python函数包含系统中自带的一 ...

  5. 详细记录python的range()函数用法

    详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...

  6. 技术图文:举例详解Python中 split() 函数的使用方法

    背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...

  7. 刻意练习:Python基础 -- Task05. 函数与Lambda表达式

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  8. 为什么Python没有main函数?

    作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...

  9. Python高阶函数使用总结!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约2000字,建 ...

  10. 为什么 Python 没有 main 函数?

    作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...

最新文章

  1. 辅助类——记录错误信息
  2. BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】
  3. CSS3实现页面的平滑过渡
  4. shell之case和循环语句(case语句的格式与举例)(for循环,while循环until循环语句的详解和continue,break解释, 九九乘法口诀表 ,等腰三角形)
  5. Hadoop上路_11-HDFS流程演示
  6. Extjs入门(07) 滚动条autoScroll:true,
  7. .NET(C#)连接各类数据库
  8. 自定义地图怎么做成html,自定义html为谷歌地图制作标记
  9. Python安装GDAL库的问题
  10. grub2使用详解(官方手册)
  11. Windows驱动开发WDM (2)- 一个简单的WDM驱动程序
  12. 远程服务器键盘变成快捷键?
  13. Excel阳历转农历VBA函数
  14. 使用FFmpeg 编解码 FLV的HEVC(H265)格式的视频
  15. 揭秘无聊程序猿的趣味人生|斑鸠职业
  16. 快排及其优化(C语言)
  17. Unity 性能优化基础
  18. shell版本爬取NVD网站信息
  19. 【技术科普一】什么是石墨烯技术?
  20. vuex概念之Getter用法详解

热门文章

  1. 前端水平一坨屎的我竟然能写出这种页面,python dash给了我希望--持续更新
  2. Latex之使用algorithm2e包来写算法
  3. 日本殡仪馆帮忙入侵逝者电脑,违反人权吗?
  4. 【CCNA】实验之思科交换机配置vlan
  5. 56、组播配置实验之PIM Sparse Mode利用Auto-RP动态选取RP
  6. BAT程序员 最强面试技巧
  7. JS 语法有效性的判断
  8. 如何实现网页自适应布局?
  9. Android黑白照片上色APP,老照片上色app
  10. HTML5期末大作业:温泉度假酒店网站设计——绿色温泉度假酒店(8页) 旅游主题度假酒店 计划出行温泉网站设计