os.path模块:处理长文件名(路径名)的函数.
1.处理文件名
filename="/home/trade/tinit.txt"
使用os.path模块处理文件名
os.path.split(filename)#('/home/trade','tinit.txt')
os.path.splitext(filename) #('/home/trade/tinit', '.txt')
os.path.dirname(filename) #'/home/trade'
os.path.basename(filename) #'tinit.txt'
#路径各个部分的拼接
os.path.join(os.path.dirname(filename),os.path.basename(filename)) #"/home/trade/tinit.txt"
#规范化路径:尤其是混合绝对路径和相对路径, window和unix风格的路径等
os.path.normpath('c://windows\\System32\\../Temp/') #'c:\\windows\\Temp'
os.path模块检查文件名的特征
os.path.exists(file) #是否存在
os.path.isabs(file) #是否是绝对路径
os.path.isdir(file) #是否为文件夹路径
os.path.isfile(file) #是否是文件路径
os.path.islink(file)&&os.path.ismount(file)#linux上的link和mount
使用os.path模块将用户名插入到文件名,用户根目录
printos.path.expanduser("~/pythonrc") #/home/trade/pythonrc
使用os.path替换文件名中的环境变量
printos.path.expandvars("/home/$USER/config") #/home/trade/config
2.搜索文件系统
使用os.path.walk搜索文件系统
walk
函数会帮你找出一个目录树下的所有文件.它的参数依次是目录名,回调函数,以及传递给回调函数的参数。
#回调函数 deffind_file(arg,dirname,files): for file in files: file_path=os.path.join(dirname,file) if os.path.isfile(file_path): print "find file:%s" %file_path #调用 os.path.walk(r"C:\Users\Administrator\Desktop\4",find_file,()) |
注释:一定区分os.path.walk()与os.walk(),os.path.walk()可以用回调函数,os.walk()更常用,如下:
for i in os.walk('/root/python'): print i #返回值,每个目录返回一个三元元祖(路径,文件夹列表,文件列表) # ('/root/python', ['class', '20120627'], ['expression.py', 'using_sys.py']) |
使用os.listdir搜索文件系统(类似ls -al)
for file in os.listdir(directory): print file |
#返回的结果和ll -al是一样,含隐藏文件。但是不一样的是,返回的文件列表中文件顺序是混乱的。