文件操作相关

看了下经常写一个项目后就需要整个目录的树结构,还有经常需要计算文件的大小,因此在这里我就把这些写在了一个文件操作类中,方便后续使用

#!/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)
原文地址:https://www.cnblogs.com/leixiaobai/p/10899277.html