看了下经常写一个项目后就需要整个目录的树结构,还有经常需要计算文件的大小,因此在这里我就把这些写在了一个文件操作类中,方便后续使用
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Xiaobai Lei import os class HandleFile: """文件操作类""" def __init__(self, treename='tree.txt'): self.treename = treename self.tree = "" def get_file_tree(self, pathname='.', n=1): """得到目录树结构""" filename = os.listdir(pathname) for file in filename: file_path = os.path.normpath(os.path.join(pathname, file)) if os.path.isdir(file_path): file_tree = ' |' * n + '-' * 3 + file self.tree += file_tree + " " print(file_tree) self.get_file_tree(file_path, n + 1) else: file_tree = ' |' * n + '-' * 3 + file self.tree += file_tree + " " print(file_tree) def save_tree_file(self, pathname='.'): """将目录树结构写入文件中""" basename = os.path.basename(pathname) self.get_file_tree(pathname) with open(self.treename, 'w', encoding='utf-8') as f: f.write(basename+" ") f.write(self.tree) @staticmethod def get_file_size(pathname): """获取文件夹的大小""" dir_size = 0 filename = os.listdir(pathname) for file in filename: file_path = os.path.normpath(os.path.join(pathname, file)) if os.path.isdir(file_path): dir_size += HandleFile.get_file_size(file_path) else: dir_size += os.path.getsize(file_path) return dir_size if __name__ == '__main__': dir_path = r"D:软件测试知识综合编程Python\s15day30" obj = HandleFile() obj.save_tree_file(dir_path) size = HandleFile.get_file_size(dir_path) print(size)