• 同步IO
  • 异步IO

最常见的IO——读写文件


  • 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
  • open()
  • read()
  • close()
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
  • with【保证了错误也能关闭】
with open('/path/to/file', 'r') as f:
print(f.read())
  • read()、read(size)、readline(),readiness()四者使用的区别
  • 还有一些具体的读写编码方式,日后自己复习。

StringIO和BytesIO


#!/usr/bin/env python3
# -*- coding: utf-8 -*- from io import StringIO # write to StringIO:
f = StringIO()
f.write('hello')
f.write(' ')
f.write('world!')
print(f.getvalue()) # read from StringIO:
f = StringIO('水面细风生,\n菱歌慢慢声。\n客亭临小市,\n灯火夜妆明。')
while True:
s = f.readline()
if s == '':
break
print(s.strip())
!/usr/bin/env python3
# -*- coding: utf-8 -*- from io import BytesIO # write to BytesIO:
f = BytesIO()
f.write(b'hello')
f.write(b' ')
f.write(b'world!')
print(f.getvalue()) # read from BytesIO:
data = '人闲桂花落,夜静春山空。月出惊山鸟,时鸣春涧中。'.encode('utf-8')
f = BytesIO(data)
print(f.read())

操作文件和目录


  • os模块【直接调用操作系统提供的接口函数】

系列化


  • 内存到磁盘的文件存储pickle模块
  • py和js的转换序列化json模块
  • Python语言特定的序列化模块是pickle,但如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。

    json模块的dumps()loads()函数是定义得非常好的接口的典范。当我们使用时,只需要传入一个必须的参数。但是,当默认的序列化或反序列机制不满足我们的要求时,我们又可以传入更多的参数来定制序列化或反序列化的规则,既做到了接口简单易用,又做到了充分的扩展性和灵活性。




最新文章

  1. JsonHelper developed by using Newtonsoft.Json.NET, Deserialize to <T> object , XmlToJson/JsonToXml, QuoteName by using JToken Path.
  2. Go语言实战 - revel框架教程之MongDB的最佳搭档revmgo
  3. 【原创】相对完美的垂直居中popup(modal/dialog),无需监听window.resize事件
  4. create thread的时候发生core dump
  5. C++字符串与转移字符
  6. MySQL初步笔记,有待整理
  7. Hibernate Java、Hibernate、SQL 之间数据类型转换
  8. 转mysql存储引擎memory,ndb,innodb之选择
  9. [MySQL]命令行工具和基本操作
  10. JAVA的第一个程序
  11. 杂题 UVAoj 10000 Longest Paths
  12. android sudio 记录
  13. hibernate 一对多操作(级联操作)
  14. Cmake设置环境变量
  15. Visual Studio 2012设置Jquery/Javascript智能提示
  16. SLF4J 使用简记
  17. java中的各种数据类型在内存中存储的方式
  18. pytorch学习: 构建网络模型的几种方法
  19. chrony时间服务器
  20. 数据类型---列表,for循环

热门文章

  1. 2springboot:快速创建springboot项目
  2. 【转】关于HTTP中文翻译的讨论
  3. android application project 开发准备工作
  4. STM32之FSMC
  5. sizeof笔试题--转
  6. 苹果内购小结 - iOS
  7. iOS- CoreData 数据库管理利器!
  8. 原生 JS 实现扫雷 (分析+代码实现)
  9. 原生js实现简单的随机点名系统
  10. javascript中sort()排序的一些理解