Kaggle で CIFAR チャレンジを行っています。
彼らは列車として 5 万枚の写真を含む .7z ファイルを提供しました。解凍するのに 1 時間かかり、すべてのファイルを読み取ってメモリに入れるのにさらに 40 分かかりました。
これがボトルネックであるため、50k ファイルを作成しないようにしています。私は pylzma と他のライブラリをインストールしましたが、ファイルが無効であることがわかります。
bash の 7z は、ファイルを適切に読み取り、ファイルを一覧表示できます。そこでPopen
、bash 7z プログラムを使用して、すべてのファイルを解凍し、メモリ内の文字列に配置するために使用しました。
import subprocess
p = subprocess.Popen(["7z", "e", "-so", "awa.7z"], stdout=subprocess.PIPE).communicate()[0]
サイズを確認し、文字列から適切なバイトを取得することで、各ファイルを個別に取得することができました
f1 = p[0][0:2105]
私が今欲しいのは、F1 ファイル ポインターと考えるように Python をトリックすることです。これにより、skimage.io.imread を呼び出すことができ、適切な構造に変換されます。または、メモリ値を skimage に渡すだけで、それが変換されます。