python之open函数

python之open函数1小序功能:打开某个文件,创建一个file对象,调用相关方法进行读写.格式:open(name[,mode[,buffering]])序号参数描述1name2mode3buffering

大家好,又见面了,我是你们的朋友全栈君。

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 memory

data 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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141301.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言system()函数的用法[通俗易懂]

    C语言system()函数的用法[通俗易懂]C语言system()函数的用法1.函数简介C语言中,system函数可以用于调用一些DOS命令,比如system(“pause”)可以卡主系统控制台,而另一个常用的system(“cls”)为清屏命令,等于在DOS上使用cls命令。2.函数支持库及原型(1)函数原型intsystem(char*command);(2)函数支持库:stdlib.h3.函数返回值(1)=-1:出现…

    2022年9月17日
    0
  • idea激活码永久3月最新在线激活

    idea激活码永久3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    48
  • dos攻击防范 php,DOS攻击和DDOS攻击的区别「建议收藏」

    dos攻击防范 php,DOS攻击和DDOS攻击的区别「建议收藏」DOS攻击和DDOS攻击的区别DDOS和DOS攻击都会使计算机或网络无法提供正常的服务;而DDOS和DOS的区别在于,DDOS是一种分布式拒绝服务,会将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。如何防DOS攻击和DDOS攻击1、带宽资源要充足带宽直接决定了抗DDOS攻击的能力,至少要选择100M带宽的,越多越好。2、服务器的硬件配置在带宽以…

    2022年9月30日
    0
  • idea解决jar包版本冲突_idea版本和maven版本

    idea解决jar包版本冲突_idea版本和maven版本2019独角兽企业重金招聘Python工程师标准>>>…

    2022年8月21日
    18
  • WLAN基本知识之802.11标准「建议收藏」

    WLAN基本知识之802.11标准「建议收藏」文章目录WLAN技术基础1.4802.11标准介绍1.4.1IEEE802.11协议族成员1.4.2IEEE802.11标准与WiFi的世代1.4.3802.11a/b/g差异1.4.4802.11n1.4.5802.11n关键技术1.4.6IEEE802.11ac标准1.4.7IEEE802.ax标准(又称WiFi6)1.4.8WiFi6理论速率计算WLAN技术基础1.4802.11标准介绍1.4.1IEEE802.11协议族成员IEEE805.11无线工

    2022年7月11日
    22
  • Windows 10出现0xc0000225错误代码如何解决?「建议收藏」

    Windows 10出现0xc0000225错误代码如何解决?「建议收藏」在使用Windows10系统的过程中,有的用户启动电脑时可能会遇到黑屏或蓝屏的0xc0000225错误提示。当出现0xc0000225错误代码时,要如何解决呢?本文提供多种解决方法。

    2022年4月19日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号