簡體   English   中英

如何腌制包含字符串的文件?

[英]How do I pickle a file containing strings?

我正在嘗試使用以下記錄來解析日志文件:

Apr 29 06:56:48 example-server sshd[38254]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=123.183.209.132  user=root
Apr 29 06:56:50 example-server CRON[33299]: pam_unix(cron:session): session closed for user root
Apr 29 06:56:50 example-server sshd[38254]: Failed password for root from 123.183.209.132 port 55181 ssh2
Apr 29 06:56:56 example-server sshd[38254]: message repeated 2 times: [ Failed password for root from 123.183.209.132 port 55181 ssh2]
Apr 29 06:56:59 example-server sshd[38254]: fatal: Read from socket failed: Connection reset by peer [preauth]
Apr 29 06:56:59 example-server sshd[38254]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=123.183.209.132  user=root

我正在嘗試腌制文件

with open('auth.log', 'rb') as logs:
    db = pickle.load(logs)

我收到錯誤消息:

TypeError: a bytes-like object is required, not 'str'

像您的日志文件的接縫不是由pickle模塊創建的。

pickle模塊實現用於對Python對象結構進行序列化和反序列化的二進制協議。 “ Pickling”是將Python對象層次結構轉換為字節流的過程,而“ unpickling”是相反的操作[1]

因此,更好的方法可能是加載日志文件並將其解析為文本。 例如,您可以使用以下命令選擇所有致命錯誤:

db = []
with open('auth.log', 'r') as logs:
    for log in logs: #for each line
        if 'fatal' in log:
            db.append(log)

您可以在此處找到有關日志文件解析的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM