🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

2回答

1406閲覧

python:logファイルの成形方法について

Masa_Nakamu

総合スコア6

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/01/20 07:08

編集2021/01/20 07:24

質問

以下のようなlogファイルの整形をpandasで整形したいのですが、どこから手を付けてよいかがわからず、、
ご知見あればご教授いただけると幸いです。 

やりたいこと

①のように別フォルダに格納された同名のファイルを②のようなテーブルにpythonで整形したい

log in cd /path/to/data1 $ ls -l drwxr-xr-x 1 testuser testuser 16384 Dec 06 00:11 XXX drwxr-xr-x 1 testuser testuser 12288 Dec 06 00:11 YYY cd /path/to/data2 $ ls -l drwxr-xr-x 1 testuser testuser 16384 Dec 06 00:22 XXX drwxr-xr-x 1 testuser testuser 12288 Dec 06 00:22 YYY cd /path/to/data3 $ ls -l drwxr-xr-x 1 testuser testuser 16384 Dec 06 00:33 XXX drwxr-xr-x 1 testuser testuser 12288 Dec 06 00:33 YYY ・・・ log out
data1 Dec 06 00:11 XXX data1 Dec 06 00:11 YYY data2 Dec 06 00:22 XXX data2 Dec 06 00:22 YYY data3 Dec 06 00:33 XXX data3 Dec 06 00:33 YYY

試したこと

ファイル部分だけをdataframeに入れる所までは行けるのですが、そこからファイルパスと紐付ける部分が良いアイデアがなく。。

df = pd.read_csv(r'C:\Users\<username>\Desktop\git\backup.log',names=["backup"] ) df = df[~df["backup"].str.startswith("$") & ~df["backup"].str.startswith("cd")] df = df["backup"].str.split(" ", expand=True) # login/logout行を削除 df=df[1:-1]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2021/01/20 09:57 編集

そもそもpandasでやるのは難しい内容だと思いますが、pandasでやらなければならない理由は何でしょう? あと、ログはもうすでに取得済みのものでしょうか? 取得したデータを利用したいのであれば、もっと良い出力を得る方法があると思いますけど。
Masa_Nakamu

2021/01/20 10:19

ご連絡をありがとうございます! ログデータは取得済みのデータとなります。 pandasに特にこだわりは無いのですが、python初学者の為、比較的使ったことのあるライブラリで実施しようとしていました。。 おすすめの方法等ありましたらご教授いただけると幸いです。
guest

回答2

0

pandasを使わない方法です。
ログファイルの内容がすべて同じ形式であるとした場合です

  1. ファイルを開けて1行ずつ読み込む
  2. 行頭が「cd」であれば、続くパスの最後の文字=ファイル名をディレクトリ名として保存する
  3. 行がファイルを示していれば、最後の4カラムを取得して、 ディレクトリ名と合せて出力もしくは保存する。

ポイントは、行が下のようにファイルを示しているかどうかの判定ですが、

drwxr-xr-x 1 testuser testuser 16384 Dec 06 00:11 XXX

決め手がないので、カラムが9個だった場合とでもしましょうか。
この判定や、行頭のcdの判定・最後の4カラムの取得などにも使えるので、読み込んだ行はスペースで区切ってリストにしておくのがよさそうですね。

投稿2021/01/20 10:36

TakaiY

総合スコア13758

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masa_Nakamu

2021/01/20 10:48

ありがとうございます!上記方針でトライしてみます!
guest

0

ファイル部分だけをdataframeに入れる所までは行けるのですが、そこからファイルパスと紐付ける部分がアイデアがなく。。
df = pd.read_csv(r'C:\Users<username>\Desktop\git\backup.log',names=["backup"] )
df = df[~df["backup"].str.startswith("$") & ~df["backup"].str.startswith("cd")]

投稿2021/01/20 07:11

Masa_Nakamu

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問