美文网首页
Python面向对象进行封装处理文件属性

Python面向对象进行封装处理文件属性

作者: 爱学习的蹭蹭 | 来源:发表于2022-11-18 11:15 被阅读0次

    Python面向对象进行封装处理文件属性

    # -*- coding:utf-8 -*-
    import os
    import filetype
    
    """
    定义一个File文件类
    """
    class File:
        
        # 定义一个构造方法
        def __init__(self ,file_name,file_size,file_type):
            self.file_name = file_name
            self.file_size = file_size
            self.file_type = file_type
            
            
    #获取指定文件的大小
    def get_file_size(path):
        return os.stat(path).st_size
    
    #获取指定文件路径的根目录
    def get_file_root(path):
        #获取文件名
        #return os.path.split(path)[1] 
        # 获取文件路径
        return os.path.split(path)[0]
    
    #指定文件路径获取文件最后文件的路径包含文件
    #如:D:\test\file.txt 返回的结果为:file.txt
    def get_file_name(path):
        return os.path.basename(path)
        
    """
    需要安装 pip install filetype 
    不会以上安装建议使用 
    filetype不支持txt的后缀的读取
    参考 https://blog.csdn.net/weixin_39959192/article/details/110170853
    """
    def get_file_type_by_guess(path):
        kind = filetype.guess(path)
        if kind is None:
           print('Cannot guess file type!')
           return
        print('File extension: %s' %kind.extension)
        print('File MIME type: %s' %kind.mime)
        return kind.mime
        
    
    """
    通过splitext函数进行获取文件的类型
    """
    def get_file_type(path):
        file_type = os.path.splitext(path)
        #print('File type: %s'%file_type[1])
        return file_type[1]
    
    path = r'D:\test\booklist.txt'
    
    # 定一个类似java的List数组进行存储对象
    file_list=[]
    
    #模拟有100个文件
    for i in (range(1, 101)):
        #处理文件属性组装File对象
        file_name = get_file_name(path)
        file_size = get_file_size(path)
        file_type = get_file_type(path)
        
        #此步骤类似java的file_list.add(单个对象)
        # 为了输出字这里file_name拼接一下i的变量,
        #python并不能像java一样,在做拼接的时候自动把类型转换为string类型,需要再int型前调用str()转换为str的方法
        file_list.append(File(file_name+(str(i)),str(file_size),file_type))
       
    
    #再次进行对file_list进行输出
    
    for fi in file_list:
        print("file_name-->"+fi.file_name +"\tfile_size-->"+fi.file_size +"\tfile_type-->"+fi.file_type)
    
    

    输出结果

    • image.png

    总结

    Python处理这方面没Java方便。各有各的优点,请各位指点,本人非Python出身
    只不过想学习这方面知识点找了很久没比较好的文章,然后记录一下。
    

    相关文章

      网友评论

          本文标题:Python面向对象进行封装处理文件属性

          本文链接:https://www.haomeiwen.com/subject/hcwmxdtx.html