输出时,需要做一些适配。
1. 注意事项与测试代码
1.需要考虑 sizeInBytes 为 None 的场景。
2.除以 1024.0 而非 1024,避免丢失精度。
实现的函数为 getSizeInMb(sizeInBytes),通用的测试代码为
def getSizeInMb(sizeInBytes): return 0 def test(sizeInBytes): print '%s -> %s' % (sizeInBytes, getSizeInMb(sizeInBytes)) test(None) test(0) test(10240000) test(1024*1024*10)
2. 以 MB 为单位输出 -- 返回 float
通常,电子书的大小在 1 - 50MB 之间,输出时统一转为 MB 是不错的选择。
弊端:
1.输出精度过高,比如 10240000 Bytes 计算结果为 10240000 -> 9.765625
2.文件大小有,小于 1 MB 或 G 级数据不适合该方式展示
优势:
1.适合于用返回值参与计算
def getSizeInMb(sizeInBytes): return (sizeInBytes or 0) / (1024.0*1024.0)
3. 以 MB 为单位保留 1 位小数 -- 返回 str
处于精度问题考虑,可以选择保留 1 位小数。
def getSizeInMb(sizeInBytes):
return '%.1f' % ((sizeInBytes or 0) / (1024.0*1024.0), ) # use 1-dimension tuple is suggested
返回值建议写成 '%.1f' % (number,) 而非 '%.1f' % (number)
二者均能正确执行,但后者容易被误判为执行只有一个参数 number 的函数,导致难以判断的错误。
3. 以 MB 为单位保留至多 1 位小数 -- 返回 str
大多数操作系统一般展示至多 1 位小数
def getSizeInMb(sizeInBytes):
sizeInMb = '%.1f' % ((sizeInBytes or 0) / (1024.0*1024.0), ) # use 1-dimension tuple is suggested
return sizeInMb[:-2] if sizeInMb.endswith('.0') else sizeInMb # python2.5+ required
4. 自动选择最佳单位
def getSizeInNiceString(sizeInBytes):
"""
Convert the given byteCount into a string like: 9.9bytes/KB/MB/GB
"""
for (cutoff, label) in [(1024*1024*1024, "GB"),
(1024*1024, "MB"),
(1024, "KB"),
]:
if sizeInBytes >= cutoff:
return "%.1f %s" % (sizeInBytes * 1.0 / cutoff, label)
if sizeInBytes == 1:
return "1 byte"
else:
bytes = "%.1f" % (sizeInBytes or 0,)
return (bytes[:-2] if bytes.endswith('.0') else bytes) + ' bytes'
算法说明:
1. 从英语语法角度,只有 1 使用单数形式。其他 0/小数 均使用复数形式。涉及 bytes 级别
2. 精度方面,KB 及以上级别,保留 1 位小数。bytes 保留至多 1 位小数。
这种处理规则,不适合于小数十分位为 0 的情况,比如 10.0 bytes,10.01 bytes。输入结果均为 10 bytes。
其他情况下,精度均不存在问题。
测试数据与结果如下图
以上内容给大家介绍了基于Python实现文件大小输出的相关知识,希望本文分享对大家有所帮助。
爱玩科技网还为您提供以下相关内容希望对您有帮助:
python如何读取文件大小
python读取文件大小的代码如下:[python] view plaincopyimport os from os.path import join, getsize def getdirsize(dir):size = 0L for root, dirs, files in os.walk(dir):size += sum([getsize(join(root, name)) for name in files])return size if '__name__' == '__main__':filesize = getdirsize(r'c:\windows')print 'There are %.3f' %...
Python 将多张图片插入到excel中并统一设置大小
4. 使用VSCode编辑器打开【珪玥珠宝】文件夹,创建一个Python或Jupyter Notebook文件。进行图片重命名时,全选图片后按【Ctrl+A】选择全部,点击【F2】进入重命名模式,输入关键字“图”并回车即可。确保同一文件夹内图片格式一致(例如均为.jpg或.jpeg格式)。完成图片重命名后,获取Excel的相对路径。在...
Python玩转视频(四):不受的调整视频的大小
首先,导入moviepy.editor模块中的VideoFileClip类。接下来,使用VideoFileClip类的构造函数,传入视频文件路径,创建VideoFileClip对象,并将其赋值给clip变量。接着,使用clip对象的resize方法,传入参数0.5,将视频大小缩放至原大小的一半。最后,使用clip_resized对象的write_videofile方法,指定输出文件路径...
Python中实现文本文件多列数据对齐:解决变长字符串导致的排版问题_百 ...
输出效果生成的文件内容如下,三列数据整齐对齐:HOUSING PARAMETERS:Can Velocity 0.02 m/hrAnnulus Velocity 0.03 m/hrTube-sheet Velocity 0.18 m/hrMedia Velocity 0.00 m/hr替代方案:使用str.format()若需兼容Python 3.6以下版本,可用str.format()实现相同效果:formatted_line =...
idea输出文件设置
3. Python/Jupyter输出处理在Jupyter Notebook或Python控制台中,输出文件处理需通过以下方式:保存结果:右键输出单元格(如图表、数据表格)选择 另存为,支持PNG、SVG等图片格式或CSV、Excel等数据格式。调整视图:拖动单元格边框调整输出区域大小,或通过左上角图标切换表格视图与图形视图。数据导出:点击 ...
python实现npy格式文件转换为txt文件操作
如果你使用pycharm作为Python的编辑器,控制台的buf默认为1024。若输出数据过多,需要修改buffer大小才能输出全部数据。修改方法如下:在pycharm安装目录下的bin目录中找到idea.properties文件,并修改idea.cycle.buffer的值,原默认值为1024:--- # This option controls console cyclic buffer: keeps the ...
Python提取文件夹里所有excel文件名,并输出到excel
import pandas as pd import win32api, win32con 选择文件夹路径:root = tk.Tk()root.withdraw()Folderpath = filedialog.askdirectory()设定输出Excel文件存放路径:win32api.MessageBox(0, "选择excel存放文件夹", "提示", win32con.MB_OK)Storagepath = filedialog.askdirectory()使用os.walk遍历...
Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积
配置Pyinstaller使用UPX:Pyinstaller默认会从执行目录里搜索UPX执行文件。如果找到UPX,它会对生成的可执行文件进行压缩。重新执行Pyinstaller打包命令,如果看到提示UPX可用,则说明配置成功。效果展示:通过对比使用UPX压缩和未使用UPX压缩的exe文件大小,可以明显看到压缩效果。虽然示例中文件本身不大,差别不明显...
如何使用Python代码高效地比对两个TXT文件,并确保获得准确的结果...
代码实现def compare_txt_files(file1_path, file2_path, delimiter=',', threshold=4): """ 比对两个TXT文件,输出满足交集数量阈值的行。 参数: file1_path (str): 第一个TXT文件路径。 file2_path (str): 第二个TXT文件路径。 delimiter (str): 行内...
深入理解 python 虚拟机:pyc 文件结构
以pycdemo.py的.pyc文件为例,pycdemo.py源程序如下:加载pycdemo01.cpython-39.pyc文件(即hello.py对应的.pyc文件)的代码如下,使用marshal读取.pyc文件内的code object。执行输出结果如下:Code object各个字段作用如下:总结:本文介绍了Python文件编译后结果文件.pyc的结构,重点解释了CodeObject对象...