python学习之IO:
输入输出兼程IO操作,有同步(速度不匹配时死等)和异步(轮询和消息通知,复杂而高效)
一 文件操作函数:
文件打开:f=open("带路径的文件名“,“操作类型 r/rb/w/a”,"编码”,“错误处理”),//中文的Windows系统上,默认使用cp936(就是gbk编码)
文件读写:f.read/f.write/f.read(size)/f.readline()/f.readlines();写内容到文件要变成字节串(编码),从文件中读出要将字节串解码成字符串;f.readlines()有换行符可将读出的用.splitlines()去除换行符;文件的写操作之后不会立即写到文件而是先缓冲碰到文件关闭或者f.flushs()时才会写进去。
文件关闭:f.close,用with方法可以避免我们忘记close文件;
PICKLE模块:pickle.dump(obj,filename),pickle.load(filename)
with语句:with open函数 as f
f.read/wirte() #操作完自动关闭
二内存操作IO:
io.open("filename","操作类型“,“编码格式”)
StringIO:
>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
ByteSIO:
>>> from io import StringIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'
三:操作文件和目录:在OS模块和shutil模块提供了copyfile()的函数 import os,文件路径分隔符为/
3.1创建文件夹 os.mkdir(;文件夹路径‘,‘文件夹名’) 例如在当前文件夹下创建:os.mkdir('./work'),删除文件夹os.rmdir;
切换文件夹到固定路径(只有将工作目录切换到指定的文件夹下,才可以将相关模块import进来):os.chdir("C:\\Users\\Michael\\Documents\\python\\mypython")
查看当前绝对路径:os.path.abspath('.')
- os.chdir("../..")#表示上两级目录
- os.chadir("/")则表示切换到当前文件所在的根目录下
3.2分离路径和文件:os.path.split('文件夹路径‘),分离文件名和类型:os.path.splitext('文件夹路径‘)
设置新文件的路径 os.path.join('文件夹路径‘,'文件名‘)
3.3创建文件:
1) os.mknod("test.txt") 创建空文件
2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件
3.4复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在
3.3文件重命名和删除、移动文件(目录):os.rename('test.txt', 'test.py') ;os.remove('test.py') ;shutil.move("oldpos","newpos")
判断目标
os.path.exists("goal") 判断目标是否存在
os.path.isdir("goal") 判断目标是否目录
os.path.isfile("goal") 判断目标是否文件