金融量化学习---Python, MySQL, Pandas

这里用来记录一些在金融领域,尤其是银行相关的资金、债券、票据中应用到的数据管理与分析, 编程等心得或笔记,以及个人的一点小小兴趣(易经八卦、藏密禅修)等

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

python 代码删除空目录

最近新换了工作,整理文档,先用我最爱的 Anti-Twin 把重复的文档删除,由于产生了许多空文件夹,所以拟用代码的方式将其清除,只留下有文档的文件夹。
于是,我做了以下尝试:

基础

要使用的os函数:

* os.path.isdir() #判断是否为目录,返回True / False
* os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
* os.path.join(dirname, filename) #链接目录与文件名,生成一个新的名称
* os.rmdir() #删除文件夹

代码如下:
import os

path = r'D:\MyData\test'
def delete_gap_dir(dir):
      	if os.path.isdir(dir):
		for d in os.listdir(dir):
		  	delete_gap_dir(os.path.join(dir, d))
		if not os.listdir(dir):
			os.rmdir(dir)

最后运行:
delete_gap_dir(path)

os.walk方法:简练却删不净的代码,但思路很好,可以改进

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

import os

for curDir, dirs, files in os.walk("test"):
    print("====================")
    print("现在的目录:" + curDir)
    print("该目录下包含的子目录:" + str(dirs))
    print("该目录下包含的文件:" + str(files))

使用这个命令来删除空文件夹也非常方便(但得删好几遍才行):

import os
path = r'D:\MyData\test'

def delfiles(dirpath):
    for root, dirs, files in os.walk(dirpath):
        if dirs == files:
            os.rmdir(root)    
            
delfiles(dirpath)

最啰嗦但校验完备的代码:

import os

path = r'D:\MyData\test'

def deldir(path):
    """
    清理空文件夹和空文件
    param path: 文件路径,检查此文件路径下的子文件
    """
    print ('*'*30)
    try:
        files = os.listdir(path)  # 获取路径下的子文件(夹)列表
        print (files)
        for file in files:
            print ('遍历路径:'+os.fspath(path +'/'+ file))
            if os.path.isdir(os.fspath(path+'/'+file)):  # 如果是文件夹
                print (file+'是文件夹')
                if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空
                    print (file+'是空文件夹,即将执行删除操作')
                    os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹
                else:
                    print (file+'不是空文件夹')
                    deldir(os.fspath(path+'/'+file)) # 遍历子文件
                    if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空
                        print (file+'是空文件夹,即将执行删除操作')
                        os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹  
            elif os.path.isfile(os.fspath(path+'/'+file)):  # 如果是文件
                print(file+'是文件')
                if os.path.getsize(os.fspath(path+'/'+file)) == 0:  # 文件大小为0
                    print (file+'是空文件,即将执行删除操作!')
                    os.remove(os.fspath(path+'/'+file))  # 删除这个文件
        return
    except FileNotFoundError:
        print ("文件夹路径错误")

if __name__ == "__main__":  
    path = input("Please input the files path:")  # 输入路径
    deldir(path)

以上三种功能都可以试试。

os.walk命令的应用:
https://www.runoob.com/python/os-walk.html (入门)
https://zhuanlan.zhihu.com/p/149824829 (高级)

Anti-Twin下载:
http://www.joerg-rosenthal.com/en/antitwin/download.html

引用:
https://www.cnblogs.com/tay007/p/11322412.html
https://my.oschina.net/blueyuquan/blog/1587906

posted on   chengjon  阅读(577)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示