首页 > 编程 > Python > 正文

Python读写文件方法总结

2020-02-23 01:35:25
字体:
来源:转载
供稿:网友

本文实例总结了Python读写文件方法。分享给大家供大家参考。具体分析如下:

1.open

使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。

file_object = open('thefile.txt')try:   all_the_text = file_object.read( )finally:   file_object.close( )

注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。

2.读文件

读文本文件

input = open('data', 'r')#第二个参数默认为rinput = open('data')

读二进制文件
代码如下:input = open('data', 'rb')

读取所有内容

file_object = open('thefile.txt')try:   all_the_text = file_object.read( )finally:   file_object.close( )

读固定字节

file_object = open('abinfile', 'rb')try:  while True:     chunk = file_object.read(100)    if not chunk:      break     do_something_with(chunk)finally:   file_object.close( )

读每行
代码如下:list_of_all_the_lines = file_object.readlines( )

如果文件是文本文件,还可以直接遍历文件对象获取每行:

for line in file_object:   process line

3.写文件

写文本文件
代码如下:output = open('data', 'w')

写二进制文件
代码如下:output = open('data', 'wb')

追加写文件
代码如下:output = open('data', 'w+')

写数据

file_object = open('thefile.txt', 'w')file_object.write(all_the_text)file_object.close()

写入多行
代码如下:file_object.writelines(list_of_text_strings)

注意,调用writelines写入多行在性能上会比使用write一次性写入要高。

在处理日志文件的时候,常常会遇到这样的情况:日志文件巨大,不可能一次性把整个文件读入到内存中进行处理,例如需要在一台物理内存为 2GB 的机器上处理一个 2GB 的日志文件,我们可能希望每次只处理其中 200MB 的内容。
在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。以下面的代码为例:

file = open('test.log', 'r')sizehint = 209715200  # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0:    position = file.tell()    lines = file.readlines(sizehint)

每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint 指定的值大一点(除最后一次调用 readlines(sizehint) 函数的时候)。通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表