Python高级功能之OS模块


目录操作就是通过Python来实现目录的创建,修改,遍历等功能

import os

目录操作需要调用os模块

>>> import os

>>> os.mkdir('test')

一、常用函数

mkdir(path[,mode=0777])

makedirs(name,mode=551)   #创建多级目录

>>> os.makedirs('a/b/c')

rmdir(path)    #删除目录

>>> os.rmdir('test')

removedirs(path)  #删除多级目录

>>> os.removedirs('a/b/c')

listdir(path)  #查看目录

>>> os.listdir('/')

getcwd()   #查看当前路径

>>> os.getcwd()

'/root/python'

chdir(path)  #切换目录

>>> os.chdir('/')

>>> os.getcwd()

'/'

walk(top,topdown=True,onerror=None)  #递归函数,目录遍历,返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表



二、目录遍历(查询目录下的所有文件)

(1)

#!/usr/bin/python

#coding:utf8

import os

allfile = []

def dirList(path):

    filelist = os.listdir(path)

    for filename in filelist:

        filepath = os.path.join(path,filename)

        if os.path.isdir(filepath):

            dirList(filepath)

        else:

            allfile.append(filepath)

    return allfile


def delFile(allfile):

    for fi in allfile:

        print fi

dirList('/root/python/testdir')

delFile(allfile)


(2)

#!/usr/bin/python

#coding:utf8

import os

def getList(paths):

    for p,dir,filelist in os.walk(paths):

        for filename in filelist:

            print os.path.join(p,filename)

getList('/root/python/testdir')




三、案例:系统垃圾清除小工具(删除包含‘2’命名的文件,包含‘loyu‘字符的文件)

#!/usr/bin/python

#coding:utf8

import os

import re

def getList(paths):

    for p,dir,filelist in os.walk(paths):

        for filename in filelist:

            filedir = os.path.join(p,filename)

            contain = re.findall("2.",filename)

            if len(contain)==1:

                os.remove(filedir)

            else:

                openfile1 = open(filedir,'r')

                for s in openfile1.readlines():

                    containchar = re.findall("loyu",s)

                    if len(containchar)>0:

                        os.remove(filedir)

getList('/root/python/testdir')