1

私はLinuxで働いています。解析されたファイルの割合を表示したいと思います。そのため、少し読んだ後、解析しているファイルの合計サイズ (バイト) を取得し、読み取り後に各行のサイズ (バイト) を計算するのが最も正確な方法であると判断しました。

これは私のダミーの簡略化されたコードです。

if __name__ == '__main__':

read_bytes = 0
total_file_size = os.path.getsize(myfile)

with open(myfile, 'r') as input_file:
    for line in input_file:
        read_bytes += sys.getsizeof(line)

        print "do my stuff"

print total_file_size
print read_bytes

出力は次のとおりです。

193794194

203979278

明らかに、合計サイズが増加している行に何かカウントがあります。私は試してみました:

read_bytes += sys.getsizeof(line) - sys.getsizeof('\n')

出力は次のとおりです。

193794194

193309190

私は何かが欠けているに違いない。

4

2 に答える 2

1

lenの代わりに使用sys.getsizeof():

sys.getsizeof()そのオブジェクトを保持するためにインタプリタが使用するバイトを返します。

>>> len('asdf')
4
>>> import sys
>>> sys.getsizeof('asdf')
37

それに加えて、ウィンドウでプログラムを実行している場合は、バイナリ モードを使用する必要があります。

open(myfile, 'rb')

ノート

file.tellを使用すると、現在の位置を計算する必要はありません。

于 2013-08-14T14:05:31.273 に答える