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出身
只不過想學習這方面知識點找了很久沒比較好的文章,然後記錄一下。