3

ファイルがアップロードされているサーバーがあります。そのサーバーへのさまざまなファイル サイズのアップロード/応答時間をプロファイリングする必要があります。つまり、10kb ファイル、100mb ファイル、およびその他の多くのサイズをアップロードするのにかかる時間です。すべてのファイルを手動で作成して保存することは避けたいです。

任意のサイズのテスト ファイルを作成できる Python モジュールはありますか? 私は基本的に次のように機能するものを探しています:

test_1mb_file = test_file_module.create_test_file(size=1048576)
4

4 に答える 4

13

1MB のファイルを作成するために 1MB を書き込む必要はありません。

with open('bigfile', 'wb') as bigfile:
    bigfile.seek(1048575)
    bigfile.write('0')

一方、本当にファイルが必要ですか? 多くの API は、任意の「ファイルのようなオブジェクト」を取ります。readそれが、readand 、行ごとの反復、またはその他の何かを意味するかどうかは常に明確ではありませんが、それが何であれ、単一または一度seekに複数のデータを作成することなく、1MB のファイルをシミュレートできるはずです。readreadline

PS、実際にPythonからファイルを送信するのではなく、後で使用するためにファイルを作成するだけの場合、この種のことのために特別に設計されたツールがあります:

dd bs=1024 seek=1024 count=0 if=/dev/null of=bigfile # 1MB uninitialized
dd bs=1024 count=1024 if=/dev/zero of=bigfile # 1MB of zeroes
dd bs=1024 count=1024 if=/dev/random of=bigfile # 1MB of random data
于 2012-11-28T21:34:33.380 に答える
2

ただ行う:

size = 1000
with open("myTestFile.txt", "wb") as f:
    f.write(" " * size)
于 2012-11-28T21:31:38.090 に答える
1

私はおそらく次のようなものを使用します

with tempfile.NamedTemporaryFile() as h:
    h.write("0" * 1048576)
    # Do whatever you need to do while the context manager keeps the file open
# Once you "outdent" the file will be closed and deleted.

これはPythonのtempfileモジュールを使用します。

NamedTemporaryFile外部アクセスが必要な場合に備えてを使用しました。そうでない場合は、でtempfile.TemporaryFile十分です。

于 2012-11-28T21:33:02.877 に答える
1

@abarnert および @jedwards の回答から:

mb = 1
with tempfile.TemporaryFile() as tf:
    tf.seek(mb * 1024 * 1024 - 1)
    tf.write(b'0')
    tf.seek(0)
于 2016-09-13T18:47:59.320 に答える