os模块提供了很多对系统直接操作的方法,实现对目录的操作。
例如
import os
os.mkdir("root")#创建一个root目录,但不能联级创建
os.makedir('/a/b/c')#可以级联创建相当于linux中的mkdir -p
os.rmdir(目录)#删除目录,不能删除有内容的目录
os.removedirs(目录)#强制删除目录
os.listdir('.')#获取当前目录列表,已列表的方式返回os.listdir('/')获取根目录下的目录文件
os.getcwd()#获取当前路径
os.chdir(路径)#切换目录,相当于cd
os.isdir(PATH)#判断是否为目录
目录遍历os.walk(path))#会返回一个元组,其中里面有3个元素,这3个元素分别表示每次遍历的路径名,
目录列表,和文件列表
>>> os.getcwd()
'/daixiangzi/code/dir_123'
>>> g=os.walk(os.getcwd())#返回的是一个元组(元组不可改变)
>>> g.next()
('/daixiangzi/code/dir_123', ['dir_2', 'dir_3'], ['file1'])#(路径名,当前路径下目录,当前路径下面的文件)
>>> g.next()
('/daixiangzi/code/dir_123/dir_2', [], ['3', '3.3', '2', '2.2', '1'])
>>> g.next()
('/daixiangzi/code/dir_123/dir_3', [], [])
>>> g.next()
某个目录下所有文件的绝对路径:
>>> os.getcwd()
'/daixiangzi/code/dir_123'
>>> g=os.walk(os.getcwd())
>>> for path,dir,filelist in g:#这里是一个技巧,元组拆分赋值
... for filename in filelist: #对文件列表的文件进行遍历
... os.path.join(path,filename)
...
'/daixiangzi/code/dir_123/dir_2/3'
'/daixiangzi/code/dir_123/dir_2/3.3'
'/daixiangzi/code/dir_123/dir_2/2'
'/daixiangzi/code/dir_123/dir_2/2.2'
'/daixiangzi/code/dir_123/dir_2/1'
异常处理
try:
except 错误类型,msg: #其中msg是接收了错误信息
语句
错误类型:
NameError:尝试访问一个未申明的变量
ZeroDivisionError:除数为0
SyntaxError:语法错误
IndexError:索引超出范围
KeyError:字典关键字不存在
IOError:输入输出错误
AttributeError:访问未知对象属性
ValueError:数值错误
TypeError:类型错误
AssertionError:断言错误
MemoryError:内存耗尽异常
NotImplementedError:方法没实现引起的异常
例子:
try:
open('dad')
except IOError,msg:
print msg
except NameError ,e:
print "ok"
finally: #(不管是否有异常,下面的语句都要执行)
print "hello"
抛出异常raise
raise TypeError("nothing!!!!")