• ホーム
  • Lifehack
  • テキストで記録している作業ログから最近のログを抽出できるようにしてみた

テキストで記録している作業ログから最近のログを抽出できるようにしてみた

作業ログから直近のログを抽出して週報にしているのですが、ログがたまってきて抽出作業が面倒になったので、Pythonに抽出してもらうようにしてみました。

目次

  1. 作業ログとは
  2. スクリプトのコード
  3. 実行結果

作業ログとは

以前投稿したもの です。

日付と作業内容をテキストファイルに記録したものです。

もちろん現物は見せられませんので、今回はこのようなテキストファイルから2018/03/31以降のものを抽出してみます。

# プロジェクトA
## タスクA-1
2018/03/31 ○○の連絡を受けた。 メール △△
2018/04/04 □□を発送した。 メール 私→△△
2018/04/01 ××を入力した。 ※※システム

## タスクA-2

# プロジェクトB
## タスクB-1
2018/03/30 ◎◎を連絡した。 メール 私→▽▽
2018/04/05 ××を入力した。 ※※システム

これを、test.txtという名前で保存しておきます。

スクリプトのコード

Python3です。

import datetime
import sys

CRITERIA = datetime.datetime.strptime('2018/03/31', '%Y/%m/%d')
FILENAME = 'test.txt'

task_title_1 = ''
task_title_2 = ''

log_data = []

# データ読み込み
with open(FILENAME, mode='rt', encoding='utf-8') as f:
    for line in f:
        if line[:2] == '# ':
            task_title_1 = line
            task_title_2 = ''
        elif line[:2] == '##':
            task_title_2 = line
        elif line[0] == '2':
            temp_data = {'finish':datetime.datetime.strptime(line[0:10], '%Y/%m/%d')  , 'task':line, 'title1':task_title_1, 'title2':task_title_2}
            log_data.append(temp_data)
            temp_data = None

tlog_title1 = ''
tlog_title2 = ''

# データを選別して出力する。
for tlog in log_data:
    if tlog['finish'] >= CRITERIA:
        if tlog['title1'] != tlog_title1 or tlog['title2'] != tlog_title2:
            tlog_title1 = tlog['title1']
            tlog_title2 = tlog['title2']
            print(tlog_title1[:-1])
            print(tlog_title2[:-1])
        print(tlog['task'][:-1])

凝ったことはしてません。

ファイルを全部読み込んでから選別して出力するので、データの加工とかやろうと思えばいろいろできると思います。

データのエラーチェックをしていないので、ログの書き方を間違えると出力されなくなります。

実行結果

出力はこうなります。

# プロジェクトA
## タスクA-1
2018/03/31 ○○の連絡を受けた。 メール △△
2018/04/04 □□を発送した。 メール 私→△△
2018/04/01 ××を入力した。 ※※システム
# プロジェクトB
## タスクB-1
2018/04/05 ××を入力した。 ※※システム

一応動きました。

公開日

広告