問題タブ [bzip2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - ファイルをアーカイブとして開いてみてください。それ以外の場合は、通常のファイルとして読み取ります
ファイルのリストを処理しようとしています。それぞれが通常のテキスト ファイルまたは bz2 アーカイブである可能性があります。
try-except ブロックを最も効率的に使用して、各ファイルを適切な形式で開くにはどうすればよいですか? ファイルの拡張子は常に信頼できるとは限らないため (そしてあまり EAFP ではないため)、ファイルの拡張子をチェックしたくありません。
現在私はやっています:
繰り返されるfor data in parse_lines(f): ...
コードは不必要に見えると思いますが、それを取り除く方法が思いつきません。以前のものを減らす方法はありますか、またはファイルを「スマートオープン」しようとする別の方法はありますか?
編集:オプションのフォローアップ
チェックするフォーマットの数を増やす適切な方法は何ですか? 例として、プログラム 7zip を使用すると、任意のファイルを右クリックして、アーカイブ (7zip がサポートするもの) として開くことができます。現在の try-except ブロック戦略では、次のようないくつかのフォーマットの後でも、すぐにブロックにネストされ始めるようです。
python - 圧縮データを保持せずに gzip または bzip2ed ダウンロードを処理する
圧縮ファイル (gzip または bzip2 のいずれか) をダウンロードし、それを解凍してその内容を分析したい (これは大量のデータを含む CSV のようなファイルで、特定の列の合計、平均などを計算します) (ダウンロードが終了する前に部分的な結果を表示できるようにするため)。ファイルは大きく (4GB)、解凍されたストリームはさらに大きいため、圧縮ファイル全体をディスクまたはメモリに保持したくありません。
Python の gzip または bz2 実装を urllib2 と組み合わせることが可能になると思いました。
…しかし、urlopen のファイルは、GzipFile に対して十分なファイルライクではないようです。そのようなストリームから読み取ろうとすると、トレースバックが表示されます。
BZ2 モジュールはさらに悪く、ファイル オブジェクトを渡すことはまったくできません。
いくつかの答えを探した後、私はこの質問を見つけました。答えは、基本的に圧縮ファイル全体をメモリに保存することで機能しますが、これは私には実行不可能です。
私に何ができる?
python - bzip2ファイルの読み込み中に内部位置を取得する方法
非常に大きな bzip2 圧縮ファイルの束に含まれるデータを解凍して解析するためのスクリプトがあります。しばらく時間がかかる場合があるため、進行状況を監視する方法が必要です。でファイルサイズを取得できることは知ってos.path.getsize()
いますがbz2.BZ2File.tell()
、非圧縮データ内の位置を返します。進行状況を監視できるように、圧縮されていないファイル内の現在の位置を取得する方法はありますか?
Java の に相当する Python があればボーナスポイントProgressMonitorInputStream
。
python - Python インストール用に bzip2 インストールのソースを手動で渡す方法は?
Python と bzip2 に関するいくつかの StackOverflow の質問を経験しました。これらは、私が明らかに今いる状態に私を導くのに非常に役立ちました. これまでに行ったことと、私が抱えている問題は次のとおりです。
- root アクセス権がなく、libbz2-dev(el) をインストールできません
- /usr/bin/bzip2 はバージョン 1.0.3 です
- /usr/bin/python はバージョン 2.4.3 です
- GNU Stowは自作のようにライブラリを管理するために使用されています。
ソースから node.js を適切にコンパイルするには、Python 2.7.3 を bzip2 モジュールと共にインストールする必要があります。はい、申し訳ありませんが、実際にはソースから通常のユーザーとしてこれらすべてを行う必要があります。
次のようにソースから bzip2 をインストールしました。
何よりも先に PATH に stow のルート ディレクトリがあるため、次のようになります。
これは、PATH で正しい bzip2 が使用されていることを示しています。
次に、ソースから Python をコンパイルし、以下を実行します。
ソースがインストールされたbzip 1.0.6ライブラリが存在するソース構成中にPythonに伝える正しい方法は何ですか?bzip2 develヘッダーを検出してモジュールを適切にインストールしますか?
c# - SevenZipSharp を使用して bzip2 ファイルを抽出すると、不必要な tar 拡張子がファイルに追加され、正しいアーカイブ情報を取得できませんか?
次のコードを使用して、指定したディレクトリに bzip2 ファイルを抽出します。
、しかし、ターゲットディレクトリに .tar が追加されたファイルを取得しました。最後の拡張子を削除すると、ファイルは正しいものになります。しかし、extrator から返されるアーカイブ ファイルは、アーカイブ ファイル名ではなく "[no name]" です。ソース ファイルからアーカイブ ファイル情報を取得していないようです。これらはバグですか、何かアイデアはありますか?
php - PharData::extractTo 抽出ファイルのファイル形式は何ですか?
extractTo
PHPクラスのメソッドを使用しPharData
て phar ファイルの内容を調べ、いくつかのストレージ結果を実行しています。バイト レベルの調査作業の限界に達したので、ここの誰かがこれを整理するのを手伝ってくれることを期待していました。
詳細は次のとおりですが、一般的に言えば、 でアーカイブ ファイルを抽出するとPharData::extractTo
、取得したファイルは亜種のように見えますbzip
が、bzip2
コマンドはそれらを好みません。これは正常phar
な動作ですか、それとも特定のアーカイブの問題ですか? (または、私が使用している PHP/OS の組み合わせの可能性もあります)。phar アーカイブからプレーン テキスト ファイルを取得する方法はありますか? または、プレーン テキストをデフォルトにする必要がありますか?
具体的には、コマンドを実行すると
私の OS 10.6.8 では、組み込みの PHP 5.3.6 を使用する Intel ベースの Mac で、アーカイブは /tmp/n98-magerun フォルダーに正常に抽出されます。
抽出中のアーカイブは、ここにあります。
BBEdit で抽出したテキスト ファイルを開くと、正しい内容が表示されます。
ただし、quicklook、、、vi
またはなどの他のツールを使用すると、cat
バイナリ データが表示されます。ファイルの内容を調べようとしたときにこれに気付きましたack
が、期待した結果が得られませんでした。grep
ファイルに対してコマンドを使用するとfile
、それがファイルであると報告されbzip
ます。
16進エディタでファイルを調べると、ファイルがBZ
ヘッダーで始まることが確認されます
ただし、ファイルを解凍しようとするとbzip2
、次のエラーが発生します
bzcat
これでファイルの途中でバーフしますが、ファイルを正常に取得できます
python - bz2 圧縮バイナリ ファイルを numpy 配列としてインポートする
データの配列を含む bz2 圧縮バイナリ (ビッグ エンディアン) ファイルがあります。外部ツールで圧縮解除し、ファイルを Numpy に読み込むと、次のように機能します。
ただし、このようなファイルは他にもたくさんあるため、事前に個別に抽出することはできません。したがって、Python で bz2 モジュールを見つけたので、Python で直接解凍できる可能性があります。ただし、次のエラー メッセージが表示されます。
明らかに、BZ2File 関数はファイル オブジェクトを返しません。圧縮ファイルを読む正しい方法を知っていますか?