IO在计算机中指Input/Output 由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。
IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动。Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,浏览器和新浪服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据。

同步和异步的区别就在于是否等待IO执行的结果

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

StringIO
很多时候,数据读写不一定是文件,也可以在内存中读写。
StringIO顾名思义就是在内存中读写str。
>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> f.write(' ')
1
>>> f.write('world!')
6
>>> f.read()
hello world

BytesIO
StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。
BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:
>>> from io import BytesIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'

文件os处理
import os
print(os.path.abspath('.')) #显示当前绝对路径
abs = os.path.abspath('.')
file = os.path.abspath(__file__)
print(os.path.abspath(__file__)) #显示当前绝对路径加当前文件

s = os.path.join(abs, 'testdir') #合并
print(s)
#os.mkdir(s) #创建目录
# os.rmdir(s) #删除目录

split = os.path.split(file) #拆分路径和文件
print(split)
print(split[1])

最新文章

  1. 动态调用webservice(部分转载)
  2. 遍历所有表,取每个表的MAXID更新到ID控制表
  3. 【翻译自nikic大神】PHP中原生类型的方法
  4. Java_动态加载
  5. SCCM 2007日志
  6. WinScp上传和下载
  7. (转)实战Memcached缓存系统(5)Memcached的CAS程序实例
  8. iframe的使用小贴士
  9. top 10 js mvc
  10. SpringMVC——数据校验
  11. AngularJs的基本使用(一)
  12. 部署WebService
  13. 2019省赛训练组队赛3.31周四-17fj
  14. 解决安装YouCompleteMe与Vim版本不兼容问题
  15. MySQL的BLOB类型(解决mysql不支持mb4编码的时候存储emoji表情问题)
  16. docker中使用的镜像加速器可以自己生成
  17. php获取并删除数组的第一个和最后一个元素
  18. 让你看不懂的swift语法
  19. C#.NET常见问题(FAQ)-程序不包含适合于入口点的静态“Main”方法怎么办
  20. ambassador 学习二 认证

热门文章

  1. POJ 2773
  2. Android知识点总结
  3. Java路径问题终于解决方式—可定位全部资源的相对路径寻址
  4. [Android] Android开发优化之——对界面UI的优化(2)
  5. vue组件样式添加scoped属性之后,无法被父组件修改。或者无法在本组件修改element UI样式
  6. 移动端fixed后 横竖屏切换时上部或下部出现空隙问题
  7. Edge 浏览器
  8. 使用Mapping实现的以太坊智能合约的代码
  9. hdu 1051 - 贪心,水题
  10. HDU 1856 More is better【并查集】