🔥
【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, バイト数=10
行 2: 文字数=5, バイト数=5
行 3: 文字数=5, バイト数=15
行 4: 文字数=5, バイト数=15
行 5: 文字数=5, バイト数=5
行 6: 文字数=5, バイト数=15
行 7: 文字数=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