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出身
只不过想学习这方面知识点找了很久没比较好的文章,然后记录一下。
网友评论