python note 文件目录(2)

# _*_ coding: utf-8 _*_
import os
"""
需求,实现学生管理目录
os.makedirs()
"""
main_dir=os.path.join(
    os.path.dirname(__file__),
    "school"
)
for v in range(1,4):
    level_dir=os.path.join(
        main_dir,
        "level{}".format(v)
    ) #年级目录
    for val in range(1,6):
        class_dir=os.path.join(
            level_dir,
            "class{}".format(val)
        ) #班级目录
        for value in range(1,31):
            id_dir=os.path.join(
                class_dir,
                "id{}".format(str(value).zfill(2))
            ) #学生目录
            print(id_dir)
            if os.path.exists(id_dir):
                os.makedirs(id_dir)
#print(main_dir)

# _*_ coding: utf-8
import os
"""
os.rmdir(路径):删除目录
os.listdir(路径):列出当前路径下所有文件和目录
os.path.isfile(路径):判断是不是文件
os.path.isdir(路径):判断是不是目录
os.remove(文件路径):删除文件
os.removedirs(多级目录路径):如果是空目录可以直接删除,如果目录有文件,那么该目录没法删除
"""
#删除a
path1=os.path.join(
    os.path.dirname(__file__),
    "a"
)
print(path1)
print(os.listdir(path1))
#不存在则创建,存在则删除
if os.path.exists(path1):
    sub_path1_list=os.listdir(path1)
    if sub_path1_list:
        for v in sub_path1_list:
            sub_path1=os.path.join(
                path1,
                v
            )
            if os.path.exists(sub_path1):
                #判断是否是文件
                if os.path.isfile(sub_path1):
                    os.remove(sub_path1)
                    #判断是否是目录
                if os.path.isdir(sub_path1):
                    os.rmdir(sub_path1)

    os.rmdir(path1)

#删除aaa/bbb/ccc/ddd
path2="aaa/bbb/ccc/ddd"
print(path2)
#递归删除多级目录
def delete_tree_dir(path):
    print(path)
    if os.path.isfile(path):
        os.remove(path)
    if os.path.isdir(path):
        for sub in os.listdir(path):
            sub_path=os.path.join(
                path,sub
            )
            delete_tree_dir(sub_path)
        os.rmdir(path)


delete_tree_dir("a")
#os.removedirs("a/b/c")
#清空school/level03下面的所有目录
def delete_level03_sub_dir(path):
    sub_dirs=filter(
        lambda v:os.path.isdir(os.path.join(path,v)),
        os.listdir(path)
    )
    for v in sub_dirs:
        delete_tree_dir(
            os.path.join(path,v)
        )

    #print(list(sub_dirs))
delete_level03_sub_dir("school/level03")


# _*_ coding: utf-8 _*_
import os
from prettyprinter import cpprint

#os.walk(顶级路径,topdown=False):展开文件和目录方法
#True最顶级目录在上,最底级目录在下
#False最底级目录在上,最顶级目录在下
#强制删除思路:是从最底层的目录和文件开始删除,自下往上
path="aaa"
#cpprint(list(os.walk(path,topdown=False)))
for root_path,dirs,files in os.walk(path,topdown=False):
    #自下往上删除所有的目录
    for d in dirs:
        os.rmdir(os.path.join(root_path,d))
    #自下往上删除所有的文件
    for f in files:
        os.remove(os.path.join(root_path,f))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值