擅长:python、mysql、java
<p>通过简单的实现解决上述“任务太小,不需要库”问题:</p>
<pre><code>def sizeof_fmt(num, suffix='B'):
for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
if abs(num) < 1024.0:
return "%3.1f%s%s" % (num, unit, suffix)
num /= 1024.0
return "%.1f%s%s" % (num, 'Yi', suffix)
</code></pre>
<p>支持:</p>
<ul>
<li>所有当前已知的<a href="https://en.wikipedia.org/wiki/Binary_prefix#Specific_units_of_IEC_60027-2_A.2_and_ISO.2FIEC_80000" rel="noreferrer">binary prefixes</a></li>
<li>负数和正数</li>
<li>大于1000字节的数字</li>
<li>任意单位(也许你喜欢用吉布斯数!)</li>
</ul>
<p>示例:</p>
<pre><code>>>> sizeof_fmt(168963795964)
'157.4GiB'
</code></pre>
<p>通过<a href="https://web.archive.org/web/20111010015624/http://blogmag.net/blog/read/38/Print_human_readable_file_size" rel="noreferrer">Fred Cirera</a></p>