2017-01-22 14 views
0

ケース: 大量の画像を含むS3バケットに大きなzipファイルがあります。メタデータを読むためにファイル全体をダウンロードしたり、zipファイルの中にいくつのファイルがあるかを知る方法はありませんか?AWS S3のzip内のファイルをダウンロードせずに数えるには?

ファイルがローカルの場合、pythonでzipfile()として開くことができます。次に、内部のすべてのファイルのリストを返すnamelist()メソッドを呼び出します。しかし、ファイルをダウンロードせずにS3に置いているときにこれを行う方法がわかりません。また、これがラムダで可能な場合は、最善の方法です。

答えて

0

ZIPファイルをダウンロードしないと、この操作はできません。 S3には、オブジェクトに対して実行できる操作の数が限られています。

Operations on Objectsを参照してください。

0

今のところ、zipファイルをダウンロードせずにこのような情報を取得することはできません。 s3にアップロードするときに、必要な情報をzipファイルのメタデータとして保存することができます。

あなたの質問に記載されているように、私たちは抽出せずにファイルリストを得ることができるPython関数を使用しています。同じアプローチを使用してファイル数を取得し、特定のファイルにメタデータとして追加してからS3にアップロードすることができます。

・ホープこれはあなたが(例の最初の1Mbの)アーカイブの一部をダウンロードしようとするとファイルリストを見るためにjarツールと属性を使用することができ、感謝

0

を支援します。

jar vt < first-part-of-archive.zip 

そして、あなたはsubprocessを使用することができますPythonでこのデータを取得するモジュールです。

+0

私はJavaに精通していません。このプロジェクトではJavaで書かれた部分はありません。どのように正確に私はPythonでサブプロセスモジュールを使用してデータを取得するのですか?私はリンクをクリックしましたが、404エラーが発生しました。 – alfredox

+0

zipアーカイブの一部を取得するには、URLをお持ちの場合は、[この質問](http://stackoverflow.com/questions/23602412/only-download-a-part-of-the-document- using-python-requests)を使用します。 'jar'ツールは、不完全なzipファイルの内容を読むことを許可します(pythonモジュールまたは' unzip'ツールは動作しません)。 –

関連する問題