ga('set', 'anonymizeIp', 1);
Categories: CodingPython

[python] MQTT log 利用python轉換 epoch time

Share

時間格式有很多種,了解各種時間格式是看懂log的基礎之一。

本文介紹如何利用python轉換MQTT log中的epoch time時間格式。

Epoch time

Epoch time就是UNIX時間,是UNIX系統使用的時間表示方式。
簡單的定義就是從1970年1月1日0時0分0秒起至現在的總秒數。(不考慮閏秒)

了解更多請參閱Wikipedia

Python轉換時間格式

那麼要怎麼轉換時間格式呢?
這邊拿2019/02/20做的紀錄來當例子,
下面為節錄部分2019/02/20所產生的MQTT log。

1550627912: mosquitto version 1.4.9 (build date 08/06/2016 11:59:29.51) starting
1550627912: Config loaded from C:\Program Files(x86)\mosquitto/mosquitto.conf.
1550627912: Opening ipv6 listen socket on port 1883.
1550627912: Opening ipv4 listen socket on port 1883.
1550627913: New connection from 192.168.0.10 on port 1883.
1550627913: New client connected from 192.168.0.10 as new_client (c1, k20).

可以看到前方的一串數字就是epoch時間格式,
我們就是要將它轉換為易讀的時間格式,
python code轉換方式如下:

import time

mqttTime = 1550627913
returnTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mqttTime))

上面程式碼為單純轉換某一時間,
若是要整個MQTT log檔案作轉換的話,
則需要搭配讀檔,並逐行讀入轉換輸出。
如此一來即可輸出一份時間轉換後之檔案。

完整讀檔轉換程式碼如下:

import sys
import time
import os

# MQTT log file 檔案名稱
logFile = "mosquitto.log"

# file existed or not
if os.path.isfile(logFile):
    # read original mitt log file
    f_ori = open(logFile, 'r')
    # custom output file name
    f_target = open('fixdate_' + logFile, 'w')

    # read line in log file
    for line in f_ori:
        # translate time
        timeStr = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(line.split(':', 1)[0])))
        # the rest data
        dataStr = line.split(':', 1)[1]
        # write lines
        f_target.writelines(timeStr + dataStr)

    # close files
    f_ori.close()
    f_target.close()    

Jys

Published by
Jys

Recent Posts

[python] Flask Create RESTful API

This article gi... Read More

3 年 前發表

[Javascript] 新增/刪除JSON中key值

在web訊息交換常會需要對JS... Read More

3 年 前發表

[JAVA] SQL Server Connection

本文介紹JAVA連線SQL s... Read More

3 年 前發表