目录

一、导入库

二、 获取指定文件大小和占用空间

三、递归遍历文件

四、排序 & 封装

五、完整代码


一、导入库

我们需要导入os库来进行文件处理和路径管理问题,math中的ceil函数

from os import *
from math import *

二、 获取指定文件大小和占用空间

如何获取文件或文件夹大小呢?

我们需要os.path中的getsize语句

如:

from os import *f = r"C:\Users\LENOVO\Desktop\os_path"
print(path.getsize(f))  # 我这台电脑的输出-> 4546 (字节bit)

那么我们怎么将字节转成我们看得懂的85B、100MB、8GB、等等呢?

我们就来写一个将字节转大小的函数吧:

from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的字节symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bf = r"C:\Users\LENOVO\Desktop\os_path.py"
print(size(path.getsize(f)))  # 我这台电脑的输出-> 4.43KB

我们是怎么实现的的呢?

因为是从大到小判断是否大于1TB,1GB,1MB,1KB,于0B的。

也就是说,大于等于1TB的就用TB如100TB,不大于等于1TB但大于等于1GB的就用单位GB如10GB,不大于等于1GB但大于等于1MB的用单位MB……那为什么不大于1KB但大于等于0B是单位B呢?因为还有一个0B的大小。

那么知道了文件大小,怎么算占用空间呢?

这与是硬盘分区格式有关。
大小是文件的实际大小,而占用空间是占硬盘的实际空间,以FAT32格式为例,硬盘的基本存储单位是簇,在FAT32中一簇是4KB 。那么,也就是说即使文件只有1个字节,在硬盘上也要占到4KB的空间 如果文件是4KB零1个字节,那就要占用8KB的空间,以此类推 结论: 大小是文件的实际大小,而占用空间是占硬盘的实际空间。如图(我这里一簇是4KB,你只要创建一个文本文件看一看它属性中的占用空间就知道了)

 那么如何计算呢 ?

我们只需要给path.getsize(f)÷4096向上取整×4096就是占用空间(这里4096是1簇也就是4KB的字节数)

也就是:

from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的字节symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bf = r"C:\Users\LENOVO\Desktop\os_path.py"
print(size(path.getsize(f)))  # 我这台电脑的输出-> 4.43KB
print(size(int(ceil(path.getsize(f) / 4096)) * 4096))  # 我这台电的输出-> 8.00KB

我们再来看看:属性后面是不是有一个括号里写着字节?

我们如何添加这个呢?

做法非常简单,代码如下:

from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的比特值symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bf = r"C:\Users\LENOVO\Desktop\os_path.py"
print(size(path.getsize(f))+"(" + str(path.getsize(f)) + "字节" + ")")  # 我这台电脑的输出-> 4.87KB(5037字节)
print(size(int(ceil(path.getsize(f) / 4096)) * 4096)+"(" + str(int(ceil(path.getsize(f) / 4096)) * 4096) + "字节" + ")")  # 我这台电的输出-> 8.00KB(8192字节)

三、递归遍历文件

学会获取指定文件大小和占用空间了,现在就该到遍历文件的部分,我们这次用递归的方式遍历文件,思路很简单:写一个函数scaner_file,利用递归解决问题,遍历路径下的每一个项目,如果是文件,在listdir1列表里加入这个文件的信息,如果是一个文件夹,则递归调用自己这个函数遍历下一层。

from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的比特值symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bglobal listdir1listdir1 = []  # 定义全局变量listdir1def scaner_file(url):"""遍历url路径下的所有文件:param url: 类型str, 需要搜索的路径"""file = listdir(url)chdir(url)for f in file:real_url = path.join(url, f)  # 拼接字符串:路径url和文件或文件夹名称if path.isfile(real_url):  # 如果路径为文件try:if (not f.startswith("~")) and (not f.startswith("$")):  # 如果不是临时文件listdir1.append([real_url, size(path.getsize(f)) + "(" + str(path.getsize(f)) + "字节" + ")",size(int(ceil(path.getsize(f) / 4096)) * 4096),path.getsize(f)])  # 在列表中加入这个文件的信息[路径,文件大小,文件占用空间,字节数(便于以后判断)]except FileNotFoundError:  # 如果没有找到文件pass  # 不做任何操作elif path.isdir(real_url):# 如果是目录,则是递归调用自定义函数 scaner_file (url)多次if (not f.startswith("~")) and (not f.startswith("$")):  # 不是临时文件scaner_file(real_url)  # 递归调用自己scaner_file(input("请输入路径:"))  # 输入路径并进行递归
print(listdir1)

我们试一试:输入D:\(D盘)

C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\python.exe C:/Users/LENOVO/Desktop/os_path.py
请输入路径:D:\
Traceback (most recent call last):File "C:\Users\LENOVO\Desktop\os_path.py", line 47, in <module>scaner_file(input("请输入路径:"))  # 输入路径并进行递归File "C:\Users\LENOVO\Desktop\os_path.py", line 44, in scaner_filescaner_file(real_url)  # 递归调用自己File "C:\Users\LENOVO\Desktop\os_path.py", line 29, in scaner_filefile = listdir(url)
PermissionError: [WinError 5] 拒绝访问。: 'D:\\System Volume Information'

我们发现它报错拒绝访问'D:\\System Volume Information',在C盘和D盘中,有一些文件和文件夹是拒绝访问的,例如我是Windows10,我列出了一些:

mission = ["D:\\System Volume Information", "C:\\Documents and Settings","C:\\Program Files\\Windows Defender Advanced Threat Protection\\Classification\\Configuration","C:\\Program Files\\Windows NT\\附件", "C:\\ProgramData\\Application Data", "C:\\ProgramData\\Documents","C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\程序", "C:\\ProgramData\\Microsoft\\Windows\\SystemData","C:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection","C:\\ProgramData\\Microsoft\\WwanSvc\\DMProfiles", "C:\\ProgramData\\Microsoft\\WwanSvc\\Profiles","C:\\ProgramData\\Packages\\Microsoft.XboxGamingOverlay_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Packages\\Microsoft.YourPhone_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Templates", "C:\\ProgramData\\「开始」菜单", "C:\\ProgramData\\桌面","C:\\System Volume Information","C:\\Users\\All Users", "C:\\Users\\Default", "C:\\Users\\Default User", "C:\\Users\\LENOVO\\AppData\\Local","C:\\Users\\LENOVO\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\程序""C:\\Users\\LENOVO\\Application Data"]

我们把判断是否为非法访问内容的功能加入到程序中:

from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的比特值symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bglobal listdir1
global missionlistdir1 = []  # 定义全局变量listdir1
mission = ["D:\\System Volume Information", "C:\\Documents and Settings","C:\\Program Files\\Windows Defender Advanced Threat Protection\\Classification\\Configuration","C:\\Program Files\\Windows NT\\附件", "C:\\ProgramData\\Application Data", "C:\\ProgramData\\Documents","C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\程序", "C:\\ProgramData\\Microsoft\\Windows\\SystemData","C:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection","C:\\ProgramData\\Microsoft\\WwanSvc\\DMProfiles", "C:\\ProgramData\\Microsoft\\WwanSvc\\Profiles","C:\\ProgramData\\Packages\\Microsoft.XboxGamingOverlay_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Packages\\Microsoft.YourPhone_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Templates", "C:\\ProgramData\\「开始」菜单", "C:\\ProgramData\\桌面","C:\\System Volume Information","C:\\Users\\All Users", "C:\\Users\\Default", "C:\\Users\\Default User", "C:\\Users\\LENOVO\\AppData\\Local","C:\\Users\\LENOVO\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\程序""C:\\Users\\LENOVO\\Application Data"]  # 部分非法访问内容def scaner_file(url):"""遍历url路径下的所有文件:param url: 类型str, 需要搜索的路径"""if url in mission:return 0else:file = listdir(url)chdir(url)for f in file:real_url = path.join(url, f)  # 拼接字符串:路径url和文件或文件夹名称if path.isfile(real_url):  # 如果路径为文件try:if (not f.startswith("~")) and (not f.startswith("$")):  # 如果不是临时文件listdir1.append([real_url, size(path.getsize(f)) + "(" + str(path.getsize(f)) + "字节" + ")",size(int(ceil(path.getsize(f) / 4096)) * 4096),path.getsize(f)])  # 在列表中加入这个文件的信息[路径,文件大小,文件占用空间,字节数(便于以后判断)]except FileNotFoundError:  # 如果没有找到文件pass  # 不做任何操作elif path.isdir(real_url):# 如果是目录,则是递归调用自定义函数 scaner_file (url)多次if (not f.startswith("~")) and (not f.startswith("$")):  # 不是临时文件scaner_file(real_url)  # 递归调用自己scaner_file(input("请输入路径:"))  # 输入路径并进行递归
print(listdir1)

输出结果:

四、排序 & 封装

想在就是排序的内容了,我们用sort函数给列表中的文件从小到大排序:

from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的比特值symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bglobal listdir1
global missionlistdir1 = []  # 定义全局变量listdir1
mission = ["D:\\System Volume Information", "C:\\Documents and Settings","C:\\Program Files\\Windows Defender Advanced Threat Protection\\Classification\\Configuration","C:\\Program Files\\Windows NT\\附件", "C:\\ProgramData\\Application Data", "C:\\ProgramData\\Documents","C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\程序", "C:\\ProgramData\\Microsoft\\Windows\\SystemData","C:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection","C:\\ProgramData\\Microsoft\\WwanSvc\\DMProfiles", "C:\\ProgramData\\Microsoft\\WwanSvc\\Profiles","C:\\ProgramData\\Packages\\Microsoft.XboxGamingOverlay_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Packages\\Microsoft.YourPhone_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Templates", "C:\\ProgramData\\「开始」菜单", "C:\\ProgramData\\桌面","C:\\System Volume Information","C:\\Users\\All Users", "C:\\Users\\Default", "C:\\Users\\Default User", "C:\\Users\\LENOVO\\AppData\\Local","C:\\Users\\LENOVO\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\程序""C:\\Users\\LENOVO\\Application Data"]  # 部分非法访问内容def scaner_file(url):"""遍历url路径下的所有文件:param url: 类型str, 需要搜索的路径"""if url in mission:return 0else:file = listdir(url)chdir(url)for f in file:real_url = path.join(url, f)  # 拼接字符串:路径url和文件或文件夹名称if path.isfile(real_url):  # 如果路径为文件try:if (not f.startswith("~")) and (not f.startswith("$")):  # 如果不是临时文件listdir1.append([real_url, size(path.getsize(f)) + "(" + str(path.getsize(f)) + "字节" + ")",size(int(ceil(path.getsize(f) / 4096)) * 4096),path.getsize(f)])  # 在列表中加入这个文件的信息[路径,文件大小,文件占用空间,字节数(便于以后判断)]except FileNotFoundError:  # 如果没有找到文件pass  # 不做任何操作elif path.isdir(real_url):# 如果是目录,则是递归调用自定义函数 scaner_file (url)多次if (not f.startswith("~")) and (not f.startswith("$")):  # 不是临时文件scaner_file(real_url)  # 递归调用自己scaner_file(input("请输入路径:"))  # 输入路径并进行递归
listdir1.sort(key=lambda obj: obj[3])  # 给listdir1排序,使用列表中的第4项,也就是字节数作为key
for item in listdir1:  # 遍历列表print("-" * 50)  # 绘制分隔符for it in item:  # 遍历对象中的每一个元素print(it)  # 输出

输出:(截取了一段)

D:\MixlyV1.4.4\MixlyforWindows\Microduino-IDE\hardware\tools\avr\lib\gcc\avr\4.9.2\include\stdfix.h
6.77KB(6929字节)
8.00KB
6929
--------------------------------------------------
D:\MixlyV1.4.4\MixlyforWindows\Microduino-IDE\hardware\tools\avr\avr\lib\avr51\libscanf_flt.a
6.77KB(6936字节)
8.00KB
6936
--------------------------------------------------
D:\MixlyV1.4.4\MixlyforWindows\Microduino-IDE\libraries\ArduinoJson\test\Misc\std_string.cpp
6.78KB(6944字节)
8.00KB
6944
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\WEB-INF\lib\appengine-jsr107cache-1.9.46.jar
6.79KB(6953字节)
8.00KB
6953
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\AppEngine\demos\guestbook\war\WEB-INF\lib\appengine-jsr107cache.jar
6.79KB(6954字节)
8.00KB
6954
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\AppEngine\lib\opt\user\jsr107\v1\appengine-jsr107cache-1.9.48.jar
6.79KB(6954字节)
8.00KB
6954
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\AppEngine\lib\user\appengine-jsr107cache-1.9.48.jar
6.79KB(6954字节)
8.00KB
6954
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\closure-library\closure\goog\events\imehandler_test.js
6.79KB(6954字节)
8.00KB
6954
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\closure-library\closure\goog\vec\vec4d_test.js
6.79KB(6954字节)
8.00KB
6954
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\closure-library\closure\goog\vec\vec4f_test.js
6.79KB(6954字节)
8.00KB
6954
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\closure-library\closure\goog\locale\genericfontnamesdata.js
6.79KB(6955字节)
8.00KB
6955
--------------------------------------------------
D:\MixlyV1.4.4\MixlyforWindows\Microduino-IDE\hardware\arduino\avr\firmwares\atmegaxxu2\arduino-usbserial\Lib\LightweightRingBuff.h
6.79KB(6955字节)
8.00KB
6955
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\AppEngine\docs\javadoc\com\google\appengine\api\prospectivesearch\package-tree.html
6.79KB(6956字节)
8.00KB
6956
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\closure-library\doc\css\article.css
6.80KB(6961字节)
8.00KB
6961
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\closure-library\closure\goog\crypt\basen_test.js
6.80KB(6965字节)
8.00KB
6965
--------------------------------------------------
D:\MixlyV1.4.4\MixlyforWindows\Microduino-IDE\hardware\tools\avr\avr\lib\avrxmega5\libscanf_flt.a
6.82KB(6980字节)
8.00KB
6980
--------------------------------------------------
D:\AppInventor2019ServerEdition_Win\resources\appinventor\DevServer\reference\blocks\images\math\number.png
6.82KB(6986字节)
8.00KB
6986
---------------------------------------

封装:

if __name__ == "__main__":scaner_file(input("请输入路径:"))  # 输入路径并进行递归listdir1.sort(key=lambda obj: obj[3])  # 给listdir1排序,使用列表中的第4项,也就是字节数作为keyfor item in listdir1:  # 遍历列表print("-" * 50)  # 绘制分隔符for it in item:  # 遍历对象中的每一个元素print(it)  # 输出

五、完整代码

# -- coding: utf-8 --
from os import *
from math import *def size(a):size_list = [1024 * 1024 * 1024 * 1024, 1024 * 1024 * 1024, 1024 * 1024, 1024, 0]  # 1TB,1GB,1MB,1KB,0B对应的比特值symbol_list = ["TB", "GB", "MB", "KB", "B"]  # 文件大小单位表for x in range(5):  # 遍历列表if a >= size_list[x]:  # 如果比特值a大于等于1TB,1GB,1MB,1KB或0B也就是单位值为symbol_list[x]详见下表try:return str("%.2f" % (a / size_list[x])) + symbol_list[x]  # 放回"大小+单位"# 我们发现占用空间和大小都是保留两位小数的,所以需要%.2fexcept ZeroDivisionError:  # 说明大小为零return str(a) + "B"  # 返回0Bglobal listdir1
global missionlistdir1 = []  # 定义全局变量listdir1
mission = ["D:\\System Volume Information", "C:\\Documents and Settings","C:\\Program Files\\Windows Defender Advanced Threat Protection\\Classification\\Configuration","C:\\Program Files\\Windows NT\\附件", "C:\\ProgramData\\Application Data", "C:\\ProgramData\\Documents","C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\程序", "C:\\ProgramData\\Microsoft\\Windows\\SystemData","C:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection","C:\\ProgramData\\Microsoft\\WwanSvc\\DMProfiles", "C:\\ProgramData\\Microsoft\\WwanSvc\\Profiles","C:\\ProgramData\\Packages\\Microsoft.XboxGamingOverlay_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Packages\\Microsoft.YourPhone_8wekyb3d8bbwe\\S-1-5-21-1551970388-401600794-1189712708-1001\\SystemAppData\\Helium","C:\\ProgramData\\Templates", "C:\\ProgramData\\「开始」菜单", "C:\\ProgramData\\桌面","C:\\System Volume Information","C:\\Users\\All Users", "C:\\Users\\Default", "C:\\Users\\Default User", "C:\\Users\\LENOVO\\AppData\\Local","C:\\Users\\LENOVO\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\程序""C:\\Users\\LENOVO\\Application Data"]  # 部分非法访问内容def scaner_file(url):"""遍历url路径下的所有文件:param url: 类型str, 需要搜索的路径"""if url in mission:return 0else:file = listdir(url)chdir(url)for f in file:real_url = path.join(url, f)  # 拼接字符串:路径url和文件或文件夹名称if path.isfile(real_url):  # 如果路径为文件try:if (not f.startswith("~")) and (not f.startswith("$")):  # 如果不是临时文件listdir1.append([real_url, size(path.getsize(f)) + "(" + str(path.getsize(f)) + "字节" + ")",size(int(ceil(path.getsize(f) / 4096)) * 4096),path.getsize(f)])  # 在列表中加入这个文件的信息[路径,文件大小,文件占用空间,字节数(便于以后判断)]except FileNotFoundError:  # 如果没有找到文件pass  # 不做任何操作elif path.isdir(real_url):# 如果是目录,则是递归调用自定义函数 scaner_file (url)多次if (not f.startswith("~")) and (not f.startswith("$")):  # 不是临时文件scaner_file(real_url)  # 递归调用自己if __name__ == "__main__":scaner_file(input("请输入路径:"))  # 输入路径并进行递归listdir1.sort(key=lambda obj: obj[3])  # 给listdir1排序,使用列表中的第4项,也就是字节数作为keyfor item in listdir1:  # 遍历列表print("-" * 50)  # 绘制分隔符for it in item:  # 遍历对象中的每一个元素print(it)  # 输出

谢谢大家浏览,人家写文章不容易,点个赞吧!

————————————————
版权声明:本文参考CSDN博主「苦荞米」的原创文章,遵循CC 4.0 BY-SA版权协议,转载附上原文出处链接及本声明。
原文链接:C# 获取文件占用空间 (绝对准确)_苦荞米的博客-CSDN博客_c# 获取文件大小

python os爬取一文件夹下所有文件,获取大小并排序相关推荐

  1. python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法

    python获取文件夹下所有文件 方法一:使用os.listdir import os for filename in os.listdir(r'c:\windows'): print filenam ...

  2. python根据文件名或后缀名遍历文件夹下所有文件或图片的路径,并计算文件行数

    python遍历文件夹下所有文件或图片的路径 代码 指定目录下的指定后缀文件 import glob #获取指定目录下的所有图片 print (glob.glob("\\home\\qiao ...

  3. python怎么读文件夹下的文件夹-python2.7读取文件夹下所有文件名称及内容的方法...

    最近稍稍有点空闲时间,于是重新温习了一下之前学习过的python基础.废话不多说,记录一下自己的所得. 首先,安装什么的不在本人的温习范围,另,本人使用的是windows下的python2.7版本,且 ...

  4. python读取文件夹下所有文件的名称_python2.7 学习之读取文件夹下所有文件名称及内容...

    python2.7 学习之读取文件夹下所有文件名称及内容 最近稍稍有点空闲时间, 于是重新温习了一下之前学习过的 python 基础废话不多说, 记录一下自己的所得 首先, 安装什么的不在本人的温习范 ...

  5. python删除文件夹中的jpg_python删除文件夹下相同文件和无法打开的图片

    前天不小心把硬盘格式化了,丢了好多照片,后来用Recuva这款软件成功把文件恢复过来,可是恢复的文件中有好多重复的文件和无法打开的图片,所以写了两个python的小程序用来解决这个问题 删除相同文件: ...

  6. python 统计文件夹下的文件夹/某类型文件的数目

            用代码读取文件时,有时需要统计某文件夹下所有文件的数目,并读取指定数目的文件!我们通常使用python的os模块完成统计工作,具体方法如下: 1.统计某文件夹下的文件夹和文件的总个数( ...

  7. python 打开文件夹所有文件_python遍历文件夹下所有文件

    python遍历文件夹下所有文件的方法:首先打开相应的代码文件:然后通过"for f in files:print(os.path.join(root, f))"方式遍历所有的文件 ...

  8. python 获取文件夹名称大全_python 获取指定文件夹下所有文件名称并写入列表的实例...

    如下所示: import os import os.path rootdir = "./pic_data" file_object = open('train_list.txt', ...

  9. Python 递归检测文件夹下的文件

    Python 递归检测文件夹下的文件. 怕自己忘记记录一下: import os# 查找指定文件夹下所有相同名称的文件 def search_file(dirPath, fileName):dirs ...

  10. python遍历读取文件夹下所有文件内容_python遍历文件夹下所有文件

    python遍历文件夹下所有文件的方法:首先打开相应的代码文件:然后通过"for f in files:print(os.path.join(root, f))"方式遍历所有的文件 ...

最新文章

  1. python a any_Python any() 函数
  2. python【力扣LeetCode算法题库】55-跳跃游戏
  3. Centos7 配置静态ip地址
  4. scanf 接收 空格 输入_【C/C++】【输入】关于scanf:输入空格,多次使用
  5. Tomcat部署Maven的JavaWeb项目——这样我们写完程序把程序打包为war包,拿到用户那边启动服务器就可以运行了,简单轻松
  6. MQTT客户端连接服务器协议,mqtt客户端和服务器长连接
  7. C语言程序练习-L1-030 一帮一 (15分)
  8. custompage.width 不能小数吗_基金净值暴涨暴跌,背后的原因你清楚吗?
  9. easyui前端框架模板_.NET Core基于Ace Admin的响应式框架
  10. UI设计师必定需要了解的sketch素材
  11. 性能比 GPU 高 100 倍!首款可编程忆阻器 AI 计算机面世
  12. 全球AI人才只有2万多,仅3000人在求职 | 报告
  13. DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)
  14. python 封闭图形面积_python实现计算图形面积
  15. Windws Server 2012 Server Backup(备份与还原)
  16. 博科FC光纤交换机详细配置教程
  17. JAVA关于实现科大讯飞语音合成功能
  18. 自动写稿机器人下载,写稿机器人有哪些,写稿机器人软件下载
  19. PYTHON TIME() 实现进度条方法
  20. Windows 2003全面优化

热门文章

  1. 摄影师选图脚本(根据快照文件的存在与否整理原文件)
  2. 《越狱》第一季 第19集
  3. 未能找到服务器主机名,未能找到主机名服务器
  4. 联想手机html5,联想手机:良心不仅仅是高性价比
  5. 智慧城市的威胁——从《看门狗》看物联网风险
  6. Android Bitmap图片优化分析
  7. 天津规定携犬外出需为犬配戴嘴套
  8. 《.NET 4.0面向对象编程漫谈》前言及配套资源包发布
  9. 电子电路的EMC检测与Motor control Frequence analysis
  10. 企业这样操作发福利,满足所有员工需求