1. ホーム
  2. python

[解決済み] Pythonでファイルサイズを変換するためのより良い方法 [終了しました]。

2022-11-18 07:41:12

質問

ファイルを読み込んで、そのサイズをバイト数で返すライブラリを使っています。

このファイルサイズはエンドユーザーに表示されるのですが、エンドユーザーが理解しやすいように、ファイルサイズを明示的に MB で割ることで 1024.0 * 1024.0 . もちろん、これは動作しますが、私はPythonでこれを行うには良い方法があるのだろうか?

より良いというのは、私が欲しいタイプに応じてサイズを操作できるstdlib関数があるかもしれないという意味です。例えば、私が MB と指定すると、自動的に 1024.0 * 1024.0 . こんな感じです。

どのように解決するのですか?

あるのは 急ぎのファイルサイズ があり、これはサイズをバイト単位で受け取り、それを美しい文字列にしてくれます。

>>> from hurry.filesize import size
>>> size(11000)
'10K'
>>> size(198283722)
'189M'

あるいは、1K==1000にしたい場合(これはほとんどのユーザが想定していることです)。

>>> from hurry.filesize import size, si
>>> size(11000, system=si)
'11K'
>>> size(198283722, system=si)
'198M'

IECもサポートしています(しかし、それは文書化されていませんでした)。

>>> from hurry.filesize import size, iec
>>> size(11000, system=iec)
'10Ki'
>>> size(198283722, system=iec)
'189Mi'

Awesome Martijn Faassenによって書かれたため、コードは小さく、明確で、拡張性があります。あなた自身のシステムを書くのはとても簡単です。

これがその一つです。

mysystem = [
    (1024 ** 5, ' Megamanys'),
    (1024 ** 4, ' Lotses'),
    (1024 ** 3, ' Tons'), 
    (1024 ** 2, ' Heaps'), 
    (1024 ** 1, ' Bunches'),
    (1024 ** 0, ' Thingies'),
    ]

のように使用します。

>>> from hurry.filesize import size
>>> size(11000, system=mysystem)
'10 Bunches'
>>> size(198283722, system=mysystem)
'189 Heaps'