Python os 模块提供了一个统一的操作系统接口函数, 这些接口函数通常是平台指定的,os 模块能在不同操作系统平台(如 nt 或 posix)中的特定函数间自动切换,从而能实现跨平台操作。
os模块常用函数:
os.getcwd():获取当前工作目录,即当前python脚本工作的目录路径。
os.chdir(“dirname”):改变当前脚本工作目录;相当于shell下的cd命 令。
os.curdir 返回当前目录:(’ . ‘)
os.pardir 获取当前目录的父目录字符串名:(’ .. ‘)
os.name 获取当前使用的操作系统(其中 ‘nt’ 是 windows,’posix’ 是 linux 或者 unix)
os.makedirs(‘dirname1/dirname2’):可生成多层递归目录,父目录如果不存在,递归生成。
os.removedirs(‘dirname1’):若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推。
os.mkdir(‘dirname’):生成单级目录;相当于Linux中mkdir dirname
os.rmdir(‘dirname’):删除单级空目录,若目录不为空则无法删除,报错;相当Linux中的rmdir dirname
os.listdir(‘dirname’):列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表形式打印。
os.remove():删除一个文件
os.rename(“oldname”, “newname”):重命名文件/目录
os.stat(‘path/filename’):获取文件/目录信息。
os.symlink(‘path/filename’, ’ ln_filename’):创建符号链接,源需要绝对路径。
os.utime():修改时间属性
os.system():运行shell命令,如执行ls -al > 1.txt命令,os.system(’ ls -al > 1.txt ‘)
os.tmpfile():创建并打开’w + b’一个新的临时文件。
os.sep 输出操作系统的特定的路径分隔符,win下为”\”,Linux下为”/”
os.linesep 输出当前平台使用的行终止符,win下为”\t\n”,Linux下为”\n”
os.pathsep 输出用于分割文件路劲的字符串
os.name 输出字符串指示当前使用的平台。win->’ nt ‘;Linux->’ posix ‘
os.environ 获取系统环境变量
os.access(“pathfile”, os.W_OK) 检验文件权限模式(W写,R读,X可执行),输出True,False。
os.chmod(‘pathfile’, os.W_OK) 改变文件权限模式
os.popen(“bash command”) 运行shell命令,生成对象,可赋给变量,再用read读取。
例如:
>>> ls = os.popen("ls D:")
>>> ls.readlines()
os.walk():生成一个目录树下的所有文件名
函数原型:
os.walk(top [, topdown = True [, onerror = None [, followlinks = False]]])
参数说明:
top表示需要遍历的目录树的路径。
topdown的默认值是“True”,表示首先返回目录树下的文件,然后遍历目录树下的子目录。值设为False时,则表示先遍历目录树下的子目录,返回子目录下的文件,最后返回根目录下的文件。
onerror的默认值是“None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。
该函数返回一个列表,列表中的每一个元素都是一个元组,该元组有3个元素,分别表示每次遍历的路径名,目录列表和文件列表。下图会更清晰的说明:
>>> for root, dirs, files in os.walk("/dir") :
... print("Root =", root, "dirs =", dirs, "files =",files) #打印目录绝对路径
结果: Root = /dir dirs = ['dir1', 'dir2'] files = ['file1', 'file2']
Root = /dir/dir1 dirs = ['dir3', 'dir4'] files = ['file3']
Root = /dir/dir3 dirs = [] files = ['file5', 'file6']
Root = /dir/dir4 dirs = [] files = []
Root = /dir/dir2 dirs = ['dir5'] files = ['file4']
Root = /dir/dir5 dirs = [] files = []
结果分析
1,先从根目录进行遍历,读取跟目录的文件夹和文件。
2,以根目录第一个子目录为新的根目录,读取其文件夹和文件。
3,再以2中的第一个子文件夹为根目录,读取文件夹和文件。(这个应该是属于树结构里面的自上而下深度遍历算法)
4,读取1步骤里面其他子目录的文件夹和文件。