【Python】ファイルの文字コードを変換する

機能

ファイルの文字コードを変換するPythonプログラムです。

例えば、以下のコマンドを実行すると文字コードshift_jisのファイルをutf-8に変換します。

python file_encoder.py input shift_jis utf-8

実行前

実行後

サンプル動画

youtu.be

プログラム

#! Python3
# 機能
#  ファイルの文字コードを変換する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python file_encoder.py パス 入力文字コード 出力文字コード
#  python file_encoder.py input shift_jis utf-8

import os
import sys
import codecs

if len(sys.argv) != 4:
    sys.exit("使い方:python file_encoder.py パス 入力文字コード 出力文字コード")

path = sys.argv[1]
enc_from = sys.argv[2]
enc_to = sys.argv[3]

for file_name in os.listdir(path):
    file_path = os.path.join(path, file_name)
    print("Encoding {}...".format(file_path))

    # 入力文字コードでファイルを読み込む
    with codecs.open(file_path, "r", enc_from) as file:
        row_data = []
        for row in file:
            row_data.append(row)

    # 出力文字コードでファイルに書き込む
    with codecs.open(file_path, "w", enc_to) as file:
        for row in row_data:
            file.write(row)

使い方

  1. Pythonを実行する

コマンド

実行コマンド

python file_encoder.py パス 入力文字コード 出力文字コード
python file_encoder.py input shift_jis utf-8

パスは相対パスでも絶対パスでも指定可能です。

実行環境

プログラム実行時の環境は以下になります。

開発環境については以下を参考にして下さい。

stmtk358.hatenablog.com

プログラムのバッチ化については以下を参考にして下さい。

stmtk358.hatenablog.com

exeファイル

Python環境がなくても実行可能なexeファイルもあります。

とりあえず試してみたい方は以下からダウンロードして下さい。

github.com

実行方法

コマンドラインから以下のコマンドを実行して下さい。

file_encoder.exe パス 入力文字コード 出力文字コード
file_encoder.exe input shift_jis utf-8

GitHub

今回使用したプログラムやテストデータはGitHubにアップロードしています。

github.com

参考文献

qiita.com