🔥

【Python】ログファイル内の文字数と文字サイズを確認する

に公開

📕 概要

・ログ1行のサイズとか文字数を簡単に確認する方法を紹介
・ファイルサイズはわかるけど、1行ごとのサイズや文字数がわからない時に使える。

🔣 サンプルコード

import sys

def read_file_and_calculate_lengths(file_path):
    """
    指定したファイル内の各行の文字数とバイト数を表示する。
    :param file_path: 対象のファイルパス
    """
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            for line_number, line in enumerate(file, start=1):
                line = line.rstrip('\n')  # 改行を除去
                char_count = len(line)  # 文字数
                byte_count = len(line.encode('utf-8'))  # バイト数
                print(f"行 {line_number}: 文字数={char_count}, バイト数={byte_count}")
    except FileNotFoundError:
        print(f"ファイルが見つかりません: {file_path}")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("使用方法: python len_read.py <ファイルパス>")
        sys.exit(1)

    file_path = sys.argv[1]
    read_file_and_calculate_lengths(file_path)

🧪 実行例

$ cat test.log 
1234567890
aiueo
12345
あいうえお
#####
#####
2025/01/01
$ python len_read.py test.log 
行 1: 文字数=10, バイト数=102: 文字数=5, バイト数=53: 文字数=5, バイト数=154: 文字数=5, バイト数=155: 文字数=5, バイト数=56: 文字数=5, バイト数=157: 文字数=10, バイト数=10
$ 

Linux mac などで手軽に確認したときは以下でもOK

echo “a” | wc -c

ここでハマった。上記の実行結果は「2」だった。
想定ではa は1byteなので 「1」 と表示されると思っていた。
2と表示された理由: ”a\n” で改行が1byteに換算されている。
(1byteの"a" + 1byteの"¥n" = 2byte)

$ echo "a" |wc -c
       2
$ 
$ echo "aiueo" | wc -c
       6
$ 

🎯 こんな時に使える

・ログ1行のサイズや文字数を知りたい

🧵 補足

・ログの文字数をサイズで計算するのは△ 
↑思わぬ場所にひらがながあると計算がくるってしまう。

Discussion