1、用os.path.getsize获取文件大小
用os.walk遍历文件夹
</pre><p></p><p>用os.getcwd()获取当前路径</p><p>用os.listdir获取路径下的文件和文件夹</p><p><span style="color:rgb(51,51,51); font-family:arial,宋体,sans-serif,tahoma,'Microsoft YaHei'; font-size:14px; line-height:24px; background-color:rgb(243,255,236)">用os.popen('rm -rf /tmp/tmpabc')删除文件</span></p><p>2、代码如下:</p><p></p><pre name="code" class="python">#!/usr/bin/env python27
#-*- coding:utf-8 -*-
import os
from os.path import join,getsize,exists,isfile,isdir
def getdirsize(dir): #获取文件或文件夹大小
size=0L
if exists(dir):
if isfile(dir):
size+=getsize(dir)
else:
for root,dirs,files in os.walk(dir): #遍历文件夹并获取文件夹大小
size+=sum([getsize(join(root,name)) for name in files])
return size
def getsizeStr(size): #转换文件大小为‘3.5KB’之类的字符串
if 0==size: return '0'
if size/1024.0<1: return '<1KB'
if size/1024.0**2<1: return '%0.1fKB' % (size/1024.0)
if size/1024.0**3<1: return '%0.1fMB' % (size/1024.0**2)
return '%0.3fG' % (size/1024.0**3)
def getsortedfiles(dirname): #把文件夹里的一级目录或文件按大到小排序
f_size=[(files,getdirsize(join(dirname,files))) for files in os.listdir(dirname)]
return sorted(f_size,key=lambda s:s[1],reverse=True) #反序排序tuple组成的列表
if __name__ == '__main__':
dirname=os.getcwd() #获取当前路径
while True:
d=raw_input("please input a floder name(default:"+dirname+"):")
if exists(d): #判断路径是否存在
dirname=d
break
elif d=='':
break
print '文件夹不存在,请重新输入'
#列出dirname中的子文件夹
subdirs=[dirs for dirs in os.listdir(dirname) if isdir(join(dirname,dirs))]
#由(子文件夹名,子文件夹大小)组成新的列表,并按size从大到小排序
dirsize=sorted([(d,getdirsize(join(dirname,d))) for d in subdirs],key=lambda s:s[1],reverse=True)
print '-------------------------------------'
print '序号 ,文件夹名称 ,大小:'
#显示所有子文件夹的总大小
print '0 , all sub dirs ,',getsizeStr(sum([size for d,size in dirsize]))
for d,size in dirsize:
print dirsize.index((d,size))+1, ', "'+d+'" ,', getsizeStr(size)
print '-------------------------------------'
#根据输入的序号,删除对应的文件夹
while True:
a=raw_input('请输入要删除的文件夹序号(0-'+str(len(dirsize))+'):')
if ''==a:
break
elif '0'==a:
b=raw_input('确认删除所有子文件夹?(y/n)')
if 'y'==b.lower():
for dirs in subdirs:
os.popen('rm -rf '+join(dirname,dirs))
print '操作完毕,已删除所有子文件夹'
break
elif a>='1' and a<=str(len(subdirs)):
deldir=dirsize[int(a)-1][0]
b=raw_input('确认删除文件夹"'+deldir+'"?(y)')
if ''==b or 'y'==b.lower():
os.popen('rm -rf '+join(dirname,deldir))
print '操作完毕,已删除文件夹"'+deldir+'",按回车键退出或输入其他序号继续'
else:
print '输入有误,按回车键退出或输入正确序号删除文件'