Python面向對象進行封裝處理文件屬性 Python面向對象進行封裝處理文件屬性 輸出結果 總結

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)

輸出結果

總結

Python處理這方面沒Java方便。各有各的優點,請各位指點,本人非Python出身
只不過想學習這方面知識點找了很久沒比較好的文章,然後記錄一下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章