我的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实现文件夹的排序的更多相关文章

  1. python 遍历文件夹 文件

    python 遍历文件夹 文件   import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...

  2. python 关于文件夹的操作

    在python中,文件夹的操作主要是利用os模块来实现的, 其中关于文件夹的方法为:os.lister() , os.path.join() , os.path.isdir() #  path 表示文 ...

  3. Python打包文件夹的方法小结(zip,tar,tar.gz等)

    本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip ? 1 2 3 4 5 6 7 8 9 10 11 import os, zipfile #打包目录为zip文 ...

  4. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  5. linux 文件&文件夹大小排序

    按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...

  6. 用Python打开文件夹

    用Python读取文件夹, 然后打开文件 下面读取到文件的每一个内容, 然后加上路径 import os path = r'../Downloads/text/content' for filenam ...

  7. 如何使用python 新建文件夹以及递归创建文件夹

    转载:如何使用python 新建文件夹以及递归创建文件夹 | 酷python (coolpython.net) 1. os.mkdir 使用python创建文件夹,通常使用os.mkdir方法,在使用 ...

  8. Python遍历文件夹

    许多次需要用python来遍历目录下文件, 这一次就整理了记录在这里. 随实际工作,不定期更新. import os class FileTraversal: def __init__(self, r ...

  9. python遍历文件夹下的文件

    在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...

随机推荐

  1. MySQL 数据库 -- 操作

    初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写. SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开 ...

  2. 沉淀再出发:Tomcat的实现原理

    沉淀再出发:Tomcat的实现原理 一.前言 在我们接触java之后,相信大家都编写过服务器程序,这个时候就需要用到Tomcat了.Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统 ...

  3. miniblast_hash算法c语言实现

    对于一组基因文件中的基因序列,选取一段基因片段,作为索引,利用hash表,查找固定的基因片段.有一定的并且容忍错误. 简单讲就是自己实现一个hashtable,将选出特定字符串建立索引,便于查询.输出 ...

  4. OC内存管理-黄金法则

    1.内存管理-黄金法则 The basic rule to apply is everything that increases the reference counter with alloc, [ ...

  5. Python2.7 - IMOOC - 2

    第三章 Python变量和数据类型 3-1.数据类型 在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,表示方法和数学上的写法一模一样,十 ...

  6. 动画的分类:属性(几何)动画、内容(视频)动画:gpu vs cpu

    属性动画通过gpu根据属性来呈现: 内容动画通过cpu解码内容按照时间呈现给gpu: (或者gpu直接解码现实?)

  7. Objective-C与JavaScript交互的那些事

    http://www.cocoachina.com/ios/20160127/15105.html 最近公司的运营瞎搞了个活动,其活动要服务端提供数据支持,web前端在微信公众账号内作为主要的运营阵地 ...

  8. 苹果浏览器样式重置submit

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/XTQueen_up/article/details/34446541 大家刚接触写手机页面 也许都会 ...

  9. vue2.* 环境搭建01

    搭建vue的开发环境: https://cn.vuejs.org/v2/guide/installation.html 1.必须要安装nodejs 2.搭建vue的开发环境 ,安装vue的脚手架工具 ...

  10. [19/04/13-星期六] 网络编程_基本概念(关注传输层、数据传输,TCP和UDP)

    一.概念 ▪ 什么是计算机网络? 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统, 网络管理软件及网络通信协议的管理和协调下,实现资源共享和信 ...