• 92795

    文章

  • 776

    评论

  • 17

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Python自学笔记-第7章文件处理(上)

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

大多数程序都需要向文件中存储或从文件中加载数据,Python对于文件的处理也提供了内置函数和丰富的第三方库。

1.内建函数

内建函数open() file()提供了初始化输入/输出(I/O)操作的通用接口。其基本语法如下:

file_object = open(file_name,access_mode='r',buffering=-1)

file_object = file(file_name,access_mode='r',buffering=-1)

参数说明:

  • filename 包含要打开的文件名字的字符串,可以是相对路径或绝对路径。
  • access_mode 也是一个字符串,代表文件打开的模式。文件模式有如下表
  • buffering 用于指示访问文件所采用的缓冲方式 0 表示不缓冲,1表示只缓冲一行数据,任何大于1的值代表使用给定值作为缓冲区大小。不提供该参数或者给定负值代表使用系统默认的缓冲机制。一般情况下使用系统默认方式即可

1.1.文件模式

文件模式指文件打开的方式,是只读,还是写入,具体可参考下表。

1.2.文件对象

open() file()函数返回的对象即为文件对象,可以操作文件对象来获取文件的内容或写入数据。以下是文件对象的一些内建方法。

1.2.1.内建方法

写入数据

在写入数据时,换行符需要手动添加。

with open('aaa.txt','w') as f:
    f.write('aaa\r')
    f.write('bbb\r')

读入数据

with open('aaa.txt','r') as f:
    for line in f.readlines():
        print(line)
运行结果
aaa

bbb
with open('aaa.txt','r') as f:
    for line in f:
        print(line)
运行结果
aaa

bbb

本例使用上下文管理器,否则需要手动关闭连接file.close()

二进制模式

with open('bbb.txt','wb') as f:
    f.write(bytes('中国\n',encoding='GBK'))
with open('bbb.txt','rb') as f:
    print(f.readlines()[0].decode('GBK'))
运行结果
中国

1.2.2.内建属性

2.二进制数据

在没有进行压缩处理的情况下,二进制格式通常是占据磁盘空间最小,保存与加载熟读最快的数据格式。下面介绍几种对于二进制格式的操作方式:

2.1.Pickle

Pickle提供了从Python程序中保存数据或向Python加载数据的最方便的方式。但是Pickle无安全机制,加载不可信源的pickle可能是危险的。

以二进制模式picking数据时,必须使用“二进制模式”(wb,rb)

pickle.dump(obj, file, protocol=None,)

  • 必填参数obj表示将要封装的对象
  • 必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”
  • 可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议3。 
import pickle
with open('ccc.txt','wb') as f:
    st = {'a':'1','b':'2'}
    data=pickle.dump(st,f,pickle.HIGHEST_PROTOCOL)
    print(data)
运行结果
None

写入后数据为:

pickle.dumps(obj)

以字节对象形式返回封装的对象,不需要写入文件中

import pickle
data = ['aa', 'bb', 'cc']  
# dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
p_str = pickle.dumps(data)
print(p_str)
运行结果    
      b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.'

pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")

必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数

with open('ccc.txt','rb') as f:
    data = pickle.load(f)
    print(data)
运行结果    
{'a': '1', 'b': '2'}

pickle.loads(bytes_object)

data = pickle.loads(p_str)
print(data)
运行结果    
['aa', 'bb', 'cc']

更多文章,请关注:


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

转载原创文章请注明出处,转载至: 梁钟霖个人博客www.liangzl.com

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤
注册梁钟霖个人博客