python实现文件夹的排序
我的github地址。
代码:
# -*- coding: utf-8 -*-
__author__ = "YuDian"
'''
v1.0: 2018/3/19 21:39
完成对指定的文件夹(TopDir)内部的文件和目录进行排序。文件和目录混合排序。可选择从小到大或者是从大到小。
'''
import os class dirc(object): # dirc类用来表示文件的大小和类型(kb,mb,gb)
def __init__(self,name,size,sizetype,ctype=0):
self.name=name # name存放名字
self.size=size # size存放更换过的大小
self.sizetype=sizetype # sizetype存放类型
self.ctype=ctype # file or dir
self.realtype=self.int2str(self.sizetype) # 类型的真实意义 b,kb,mb,gb
self.realctype=self.ctype2real(self.ctype) def int2str(self,sizetype):
if self.sizetype==1:
return 'Byte'
elif self.sizetype==2:
return 'KB'
elif self.sizetype==3:
return 'MB'
elif self.sizetype == 4:
return 'GB' def ctype2real(self,ctype):
if ctype==1:
return 'Dir'
elif ctype==0:
return 'File' def printlog(self):
print(self.realctype,':',self.name,'__',self.size,self.realtype) AllSize=[] # AllSize用来存放所有的dirc类 def single_dir_size(dirname): #程序的功能是对传入的文件夹计算大小的单位
size=GetDirSize(dirname) # 调用GetDirSize函数,得到原始大小
BeautifulSize,sizetype=beautiful_size(size) # 调用beautiful_size函数,得到变换后的大小和单位
return BeautifulSize,sizetype def GetDirSize(dirname): # 得到dirfile的大小。dirname是文件夹名
TotalSize=0
for (DownRoot,DownDirs,DownFiles) in os.walk(dirname):
for file in DownFiles:
TotalSize=TotalSize+os.path.getsize(os.path.join(DownRoot,file))
return TotalSize def beautiful_size(size): # 对size进行单位转换
sizeflag=1
while size>1024:
size=size/1024
sizeflag=sizeflag+1 # sizeflag:1 byte 2: kb 3:mb 4:gb
return size,sizeflag def all_sort(list,SortType=1): # SortType:1 AllSize[0]:min SortType:0 AllSize[0]:max # 不能用可变参量*name传入list。不然在函数内会变成tuple #用冒泡排序法对List进行排序
for n in range(0,len(AllSize)-1):
for i in range(0,len(AllSize)-1-n):
RivalLow=AllSize[i]
RivalHigh=AllSize[i+1]
c=RivalLow.size * 1024 ** (RivalLow.sizetype - 1)
d=RivalHigh.size * 1024 ** (RivalHigh.sizetype - 1)
if RivalLow.size*1024**(RivalLow.sizetype-1)>RivalHigh.size*1024**(RivalHigh.sizetype-1):
AllSize[i],AllSize[i+1]=RivalHigh,RivalLow
if SortType==1: # 选择排序方法:默认从小到大
return AllSize # 1 从小到大
elif SortType==0:
return AllSize[::-1] # 0 从大到小 n=1 # 得到TopDor下一层的文件夹名
TopDir=r'F:\for_python' # TopDir 指向最高层的文件夹
for(root,dirs,files) in os.walk(TopDir):
if n==1:
FirstName=dirs # FirstName下存放的是TopDir下第一层的文件夹名(只有名字,不是全路径)
FirstFiles=files
n = n + 1
for FileName in FirstFiles:
FileFullName=os.path.join(root,FileName)
FileSize=os.path.getsize(FileFullName)
FileSize,FileSizeType=beautiful_size(FileSize)
AllSize.append(dirc(name=FileFullName,size=round(FileSize,3),sizetype=FileSizeType,ctype=0)) for name in FirstName:
DirAllName=os.path.join(root,name) # 得到文件夹的完整路径
DirSize,DirSizeType=single_dir_size(DirAllName) # 得到文件大小和单位
AllSize.append(dirc(name=DirAllName,size=round(DirSize,3),sizetype=DirSizeType,ctype=1)) # 将信息组成class放到List中。
# round(size,n) 将传入的数据size保留n位小数。
# for i in AllSize:
# print(i.name,'__',i.size,'__',i.realtype)
# print(type(AllSize))
SortedAllSize=all_sort(AllSize)
for i in SortedAllSize:
i.printlog()
python实现文件夹的排序的更多相关文章
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- python 关于文件夹的操作
在python中,文件夹的操作主要是利用os模块来实现的, 其中关于文件夹的方法为:os.lister() , os.path.join() , os.path.isdir() # path 表示文 ...
- Python打包文件夹的方法小结(zip,tar,tar.gz等)
本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip ? 1 2 3 4 5 6 7 8 9 10 11 import os, zipfile #打包目录为zip文 ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- linux 文件&文件夹大小排序
按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...
- 用Python打开文件夹
用Python读取文件夹, 然后打开文件 下面读取到文件的每一个内容, 然后加上路径 import os path = r'../Downloads/text/content' for filenam ...
- 如何使用python 新建文件夹以及递归创建文件夹
转载:如何使用python 新建文件夹以及递归创建文件夹 | 酷python (coolpython.net) 1. os.mkdir 使用python创建文件夹,通常使用os.mkdir方法,在使用 ...
- Python遍历文件夹
许多次需要用python来遍历目录下文件, 这一次就整理了记录在这里. 随实际工作,不定期更新. import os class FileTraversal: def __init__(self, r ...
- python遍历文件夹下的文件
在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...
随机推荐
- php性能调优
第一章 针对系统调用过多的优化 我这次的优化针对syscall调用过多的问题,所以使用strace跟踪apache进行分析. 1. apache2ctl -X & 使用-X(debug)参 ...
- [T-ARA][Cry Cry]
歌词来源: Cry Cry:http://music.163.com/#/song?id=22704434 Cry Cry (Ballad Ver.):http://music.163.com/#/s ...
- pythone 请求响应字典
_RESPONSE_STATUSES = { # Informational 100: 'Continue', 101: 'Switching Protocols', 102: 'Processing ...
- Android如何自学----转自lavor从segmentfault
如何自学Android 1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看<Java编程思想>,巩固基础,查漏补全,了解并熟悉更多细节知识点. 对于没有基础的同学推荐看 ...
- Java集合源码 -- Collection框架概述
1.概述 collection框架是用于处理各种数据结构的,要根据各种数据结构的特点理解它 它能够保存对象,并提供很多的操作去管理对象,当你面临下面的情况时,也许你应该考虑用集合类 1.容器的长度是不 ...
- 1、Android-活动(下)
1.4.活动的生命周期 对于活动来说生命周期的理解时非常重要的 当对其生命周期有了足够的了解,可以很好的写出程序 1.4.1.返回栈 Android中的活动是可以层叠的 没启动一个新的活动,就会立即覆 ...
- PHP面试系列 之框架(二)---- 常见框架的特性
题:PHP框架有哪些,你用过哪些?各自的优缺点是什么? 考点: (1)PHP框架的差异和优缺点 1.Yaf框架 使用PHP扩展的形式写的一个PHP框架,也就是以C语言为底层编写的,性能上要比PHP代码 ...
- pgAdmin4 重置布局
pgAdmin4 是网页版客户端,而且在其网页上可以通过拖拽改变布局.当布局混乱时可以通过 菜单File--Reset Layout功能来重置. 如果这篇随笔只是为了说以上这句话就没必要了,而且你根据 ...
- Dubbo实践(一)入门示例
dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候 ...
- 微服务前端开发框架React-Admin
前言 React-Admin是基于React16.x.Ant Design3.x的管理系统架构. 采用前后端分离,内置了许多管理系统常用功能,通过一些脚本.封装帮助开发人员快速开发管理系统,集中精力处 ...