python学习笔记7-Python目录创建,删除和遍历

目录和文件的操作,需要引入 os 模块:

 import os

一、创建目录

目录 directory ,简写 dir ,简单来说就是文件夹。

  • 使用 os.mkdir( ) 函数创建目录(创建一级目录)。

  • 使用 os.makedirs()函数创建多级目录(目录下面还有目录)。

原型如下所示:

os.mkdir( path )     # mk 就是 make
os.makedirs( path )  # 居然不是 mkdirs,我觉得这个名字太不科学了,增加了记忆数量。

参数path 为要创建目录(文件夹)的路径。

os.mkdir('d:\hello')   # D盘下创建hello的目录
os.mkdir("hello")      # 跟python文件同级的目录

os.makedirs('d:\\books\\book')   # 字符串中的 \ 具有转义的功能,所以表示普通的 \ ,需要 \\
os.makedirs( r"d:\books\book" )  # 字符串前面加个 r,就不会转义了。
os.makedirs(  r"books\book" )    # 跟 python 文件同级的文件夹

但是,如果文件夹已经存在,再创建相同目录,就会报错。

所以,一般在创建目录之前,要做一个判断,看路径是否存在(多级目录判断方式一样)。

isExist = os.path.exists( r"ss\abc" )  # 文件夹存在与否
if not isExist:  # 如果不存在文件夹
    os.makedirs(r"ss\abc")  # 创建目录

os.path.exists( x ) 可以判断文件或者文件夹是否存在。是,True;不是,False。

二、删除目录

删除 remove,简写 rm。

  • os.rmdir( ) 删除目录。

  • os.removedirs( ) 函数删除多级目录

和创建目录函数对比,发现多级目录 make 和 remove 写的是完整单词。

原型如下:

os.rmdir( path )       # 删除单级目录
os.removedirs( path )  # 删除多级目录

参数path 为要删除的目录(文件夹)路径。

os.rmdir('d:\ss')     # 删除 d 盘下的 ss 目录
os.rmdir('ss')        # 删除 python 文件同级的 ss 目录

os.removedirs('d:\\ss\\abd')  #  删除多级目录
os.removedirs( r"ss\abd")    

注意:要删除的目录必须是空目录!所以,在删除目录之前,一定要清空目录里的内容。有一个文件或者文件夹都不行。

三、删除文件

使用 os.remove( ) 函数删除一个文件。不能是多个文件。

os.remove( r"ss\abc\test.txt")      #  删除 ss\abc 目录下的 test.txt 文件

四、遍历目录

使用 os.walk( ) 函数遍历目录。

其原型如下:

os.walk( path )

其参数path 为要遍历的目录。

返回一个对象,它的每个部分都是一个三元组 ( '目录x',[目录x下的目录list],目录x下面的文件 )

mulu =  os.walk( "ss" )    #  遍历跟 python 文件同级的 ss 文件夹。其结构如下图。
for item in mulu:
    print( item )

('ss', ['abc'], [])
('ss\\abc', ['11', '22', '33'], ['abc1.txt', 'abc2.txt', 'abc3.txt'])
('ss\\abc\\11', [], ['py1.txt', 'py2.txt', 'py3.txt'])
('ss\\abc\\22', [], [])
('ss\\abc\\33', [], [])

输出的目录结构,从上到下,一层一层的输出,直到底层。

五、判断是否为目录

os.path.isdir( path ) 函数判断某一路径是否为目录。是,True;不是,False。

六、判断是否为目录

os.path.isfile( path ) 函数判断某一路径是否为文件。是,True;不是,False。

小案例1:删除目录下所有的文件

删除目录下所有的文件,含子目录的文件

mulu =  os.walk( "ss" )
for item in mulu:
    for file in item[2]:
        print( item[0]+"\\"+file )
        os.remove( item[0]+"\\"+file )

小案例2:删除某个目录

删除某个目录,该目录不为空,有子文件夹和文件。如图所示:

def delFolder(targetDir):
    fList = os.walk(targetDir)
    dirs = []    # 文件夹目录 lsit
    for item in fList :
        print(item)
        for  file in item[2]:  # 遍历元素2 文件list
            os.remove(item[0]+"\\"+file)  # 删除文件
        dirs.append(item[0])  # 从上到下依次把文件夹目录放进list中
        
    dirs = dirs[::-1]   # 逆向文件夹路径,从下到上
    for itemDir in dirs: # 从下到上,依次删除目录
        os.rmdir(itemDir)

delFolder("test")
发布了86 篇原创文章 · 获赞 146 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42703239/article/details/104228899