Python简单文件存取

文件的概念

文件是计算机中由操作系统管理的具有名字的存储区域。

Python中的文件对象

文件对象(file)是处理文件常用的并且全能的工具。这个主要【内置对象类型】提供了一种可以存取Python程序内部文件的方法。

使用【内置open函数】会创建一个Python文件对象(常命名为 f),它可以作为计算机上的一个文件链接,你可以通过调用 f 的方法来读写相关外部文件。

多数文件方法都与执行【外部文件相关的文件对象】的输入和输出有关,但其他文件方法可查找文件中的新位置、刷新输出缓存等。

打开文件

open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

#函数语法:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
f = open('test.txt','r') 
f.close()

常用参数说明:

  • name : 必需,文件路径(相对或者绝对路径)。
  • mode : 可选,文件打开模式,默认为只读。
  • buffering : 设置缓冲。

下图是12种Mode。其中’r’代表“read”(只读,文件指针在开头),'w’代表“write”(只写,文件指针在开头,删除原内容),'a’代表“append”(追加,文件指针在末尾)。‘b’代表“binary”(以二进制形式打开),’+'代表读写。
在这里插入图片描述
此外还有 t t t 文本模式 (默认)。 x x x 写模式,新建一个文件,如果该文件已存在则会报错。 U U U通用换行模式(不推荐)。

file对象

file 对象使用 open 函数来创建,下面列出了 file 对象常用的函数:

#【关闭】
file.close()#关闭文件。关闭后文件不能再进行读写操作。

#【读取】
file.read([size])#从文件读取指定的字节数,如果未给定或为负则读取所有。
#你必须使用bytes字符串处理二进制文件,并且用常规的str字符串处理文本文件。
file.readline([size])#读取整行,包括 "\n" 字符。
file.readlines([sizeint])#读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节
for line in f: 
	print(line,end='') #通过迭代器访问
file.next()#返回文件下一行。	
#如果想不带“\n”,可以把结果print(),这个函数可以很好地解析字符串。

#【写入】	
file.write(str)#将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence)#向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

读取后,可能需要把字符串转为其他对象:

line.rstrip()#去掉多余的行终止符\n
line.split(',')#从逗号分隔符的地方将整行断开,得到的结果就是含有个别数字的子字符串列表
numbers=[int(P) for P in parts]#把字符串列表转为数字列表
eval('[1,2,3]')#eval这一内置函数,eval能够把字符串当作可执行程序代码

如果要写入字符串以外的数据,先将他转换为字符串:

f.write('spam'+'\n')
f.write('%s %s\n' % (1,2))
f.write(str([1,2,3])+str({'a':1}))

pickle模块

pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,也并不要求我们把字符串转换来转换去。它就像是超级通用的数据格式化和解析工具。例如,想要在文件中储存字典,就直接用pickle来储存。

pickle模块执行所谓的对象序列化(object serialization),也就是对象和字节字符串之间的相互转换。

import pickle
#【存】
D={'a':1,'b':2}
f=open('datafile.pkl','wb')
pickle.dump(D,f)
f.close()
#【取】
f=open('datafile.pkl','rb')
e=pickle.load(f)

文件上下文管理器

Python 3.0和Python 2.6中有所更新。因而比文件自身多了一个异常处理功能,它允许我们把文件处理代码包装到一个逻辑层中,以确保在退出后可以【自动关闭文件】,而不是依赖于垃圾收集上的自动关闭:

with open(r'data.txt') as myfile:
	for line in myfile:
		print(line)

#等同于:
myfile=open(r'data.txt')
try:
	for line in myfile:
		print(line)
finally:
	myfile.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值