私はPythonの初心者です。私はUNIXのstdoutファイルを取り込んでJSON形式のファイルに変換するスクリプトを作成しようとしています。ファイルの形式は、すべての行に以下の通りです:今、私の問題は、私は分割を使用する場合(あるPythonでカスタムLinuxのstdoutをJSONに貼り付けるにはどうすればいいですか?
236342512 200 George usr/temp/a\ path/random1.txt
:
inodeNumber fileSize ownerName pathToFile
パスは、例を空白やバックスラッシュ文字を含めることができています"")メソッドを使用して辞書に格納すると、ファイルパスの空白はパスのキー値を2つ以上作成します。私はそれをエンコードすることを考えましたが、そのスペースがエンコードされるので、パス内のスペースの問題は解決しません。
私が取得しようとしていますJSON形式は次のとおりです。また、キーにそれぞれの属性を格納するためにJSONにそのカスタムUNIXの標準出力ファイルから、このような変換に進めるための最善の解決策である
{
"files": [{
"inodeNumber": "236342512",
"fileSize": "200",
"ownerName": "George",
"pathToFile": "usr/temp/a\ path/random1.txt"
},
{...}]
}
Python辞書で-valueペアを作成し、JSONオブジェクトを作成してファイルにダンプしますか?私は非常に大きなファイル(それぞれ1GB以上!)で作業するので、パフォーマンスも考慮する必要があります。
ありがとうございます!
私はそれがパスについては何も想定していないとして、行を解析するために、このメソッドを使用すると思い
あなたが知っているので、最初の3つの値には空白がなく、残りの値(パス)には、最初の3つの値をとり、値として代入し、残りの分割結果を取り出して結合してみましょうスペースで一緒に戻って?あなたのユースケースを背景にしなくても、パフォーマンスについて何かお勧めするのは誰にとっても難しいでしょう。 – imm
出力jsonはどのように見えますか? 'str.split(" "、4)'は分割問題を修正します。 – jordanm
@imm返信いただきありがとうございます。希望のJSON出力を含むように投稿を編集しました。だから、配列に最初の3つの値を取得したら、他の値と一緒にパスに戻っていく方法は?また、どの情報を背景としてさらに提供する必要がありますか?申し訳ありませんが、スタックオーバーフローに関する質問を投稿したのは初めてのことですが、残念ですが、私はまだそれほど残っていません。Pこれが役に立ったら、1000万行以上を処理しようとしています。 –