python 同步IO
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])