Python3之文件的使用

1 、对文件的理解

  • 文件式存储在辅助存储器上的数据序列
  • 文件式数据存储的一种形式
  • 文件展现形态:文本文件和二进制文件(本质上所有文件都是二进制形式存储,形式上所有文件都采用两种方式展示)

文件是数据的抽象和集合。

2、文本文件

  • 单一特定编码组成的文件,如UTF-8编码
  • 由于存在编码,也被看成是存储着的长字符串
  • 适用于例如:.txt文件,.py文件等

3、二进制文件

  • 直接用比特0和1组成,没有统一字符编码
  • 一般存在二进制0和1的组织结构,即文件格式
  • 适用于例如:.png文件、.avi文件等

4 、文件的的打开和关闭

<变量名>(文件的句柄) = open(<文件名>(文件路径和名称,源文件同目录可省路径),<打开模式>(文本or二进制||读or写))

在用绝对路径的时候,本来应该为D:\Python,但是由于\在python中为转义字符,所以也可以用反斜杠,即:D:/Python 或者 D:\Python
在这里插入图片描述
w和x的区别在于,当文件存在的时候,w是直接全删除原有内容,直接写,而x则会发生异常

>>> f=open("f.txt") 		#文本形式,只读模式,默认值
>>> f=open("f.txt","rt")	#文本形式,只读模式,同默认值
>>> f=open("f.txt","w")		#文本形式,覆盖写模式
>>> f=open("f.txt","a+")		#文本形式,追加写模式+读文件
>>> f=open("f.txt","x")		#文本形式,创建写模式
>>> f=open("f.txt","b")		#二进制形式,只读形式
>>> f=open("f.txt","wb")		#二进制形式,覆盖写模式

文件的关闭使用:<变量名>.colse()
如果程序正常结束,文件最后也会自动关闭,但是最好还是写上

5、文件内容的读取

s = "你真的很棒"
<f>.read(size=-1)		#读入全部内容,如果给出参数,读入前size长度
>>> s=f.read(2)
>你真

<f>.readline(size=-1)	#读入一行内容,如果给出参数,读入该行前size长度
>>>s=f.readline()
>你真的很棒

<f>.readlines(hint=-1)		#读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行
>>>s=f.radlines()
>[你真的很棒]				#返回的是一个列表类型

遍历全文本的四种方法
1)
fo=open("f.txt","r")
txt=fo.read()	#对全文txt进行处理,一次读入,统一处理
fo.close()
2)
fo=open("f.txt","r")
txt = fo.read(2)
while txt != "":			#按数量读入,逐步处理
	txt=fo.read(2)
fo.close()
3)
fo=open("f.txt","r")
for line in fo.readlines():		#一次读入,分行处理
	print(line)
fo.close()
4)
fo=open("f.txt","r")
for line in fo:				#分行读入,逐行处理
	print(line)
fo.close()

6、数据文件的写入

<f>.write(s)	#向文件写入一个字符串或字节流
>>>f.write("你真的很棒")

<f>.writelines(lines)		#将一个元素全为字符串的列表写入文件
>>>ls=["中国","法国","美国"]
>中国法国美国

<f>.seek(offset)			#改变当前文件操作指针的位置,offset含义如下: 0-文件开头;1-当前位置;2-文件结尾
>>>f.seek(0)	#回到文件开头

fo.open("f.txt","w+")
le=["中国","法国","美国"]
fo.writelines(ls)
for line in fo:			#写入一个字符串列表
	print(line)
fo.close()
!!!!没有任何输出

fo.open("f.txt","w+")
le=["中国","法国","美国"]
fo.writelines(ls)
fo.seek(0)
for line in fo:			#写入一个字符串列表
	print(line)
fo.close()
输出为:中国法国美国

因为,随着文件的输入,指针指向了最后输入结束的位置,所以第一个代码,是接着从该位置向后读取,所以没有任何输入,当回到文件开头后再向后读取时,即可输出成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值