python IO编程
IO编程
IO在计算机中指的是input/output,其中的输入输出是以CPU为对象来讲的,由于CPU和内存的速度远高于外设的速度,所以在IO编程中,就存在着严重的速度不匹配问题。解决这个问题有两种思路:
一是让CPU和内存等待着外设,这种成为同步IO,另一种是CPU不等待,继续执行下面的代码,这种称为异步IO。他们的区别就在于是否等待IO执行的结果。很明显使用异步IO来编写程序的性能远高于同步IO,但是异步IO的缺点是编程模型复杂。想想看,你得知道什么时候通知你“汉堡做好了”,而通知你的方法也各不相同。如果是服务员跑过来找到你,这是回调模式,如果服务员发短信通知你,你就得不停地检查手机,这是轮询模式。总之,异步IO的复杂度远远高于同步IO。
操作文件和目录
可以再命令行中使用操作系统提供的命令来操作文件和目录,而再程序中进行这样的操作本质上也只是调用操作系统提供的接口,Python内置的os模块可以直接调用操作系统提供的接口
>>>import os >>>os.name#查看操作系统的类型'nt'代表的windows >>>os.uname()查看操作系统的详细信息,再windows不提供
os.listdir( )获取当前路径下所有文件目录和文件名
操作文件和目录的函数一部分在os模块中,一部分则在os.path中
# 查看当前目录的绝对路径: >>> os.path.abspath('.') '/Users/michael' # 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来 >>> os.path.join('/Users/michael', 'testdir')#只是合成路径,并不要直接拼接字符串,这样可以处理不同操作系统的路径分隔符 '/Users/michael/testdir' # 然后创建一个目录: >>> os.mkdir('/Users/michael/testdir') # 删掉一个目录: >>> os.rmdir('/Users/michael/testdir')
只是合成路径,并不要直接拼接字符串,而是调用os.path.join(),这样可以处理不同操作系统的路径分隔符,拆分路径使用os.path.split(),会把最后一个给分割出来
>>> os.path.split('/Users/michael/testdir/file.txt') ('/Users/michael/testdir', 'file.txt')
os.path.splitext()
可以直接让你得到文件扩展名
这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。
os.path.isdir()判断是否是个目录
文件操作
# 对文件重命名: >>> os.rename('test.txt', 'test.py') # 删掉文件: >>> os.remove('test.py')
创建文件,在open()中如果文件不存在,就会创建
复制文件
复制文件由shutil模块提供的copyfile()函数,这个模块提供其他一些非常使用的操作,可以作为对os模块的补充
环境变量
操作系统中定义的环境变量可以通过os.environ变量访问,可以通过os.environ.get('key')获取某个变量的值