[Python] 322 ファイルの文字コードを一括変換

[Mac mini M1(2020), macOS Big Sur 11.6.1, Python 3.10.0]

Javaに関する基本的な知識を整理するため、”オラクル認定資格教科書 Javaプログラマ Silver SE11″を購入しました。Amazonセール半額の2090円だったので思わずポチりました。

例によってサンプルコードの文字コードがShift-JISのため、Macで読めるようUTF-8に一括変換しました。

まずサンプルコードのフォルダをコピーしフォルダ名を変更。自製アプリでディレクトリ構造を残したままファイルを全消去しました。そして以下の一括変換コードを実行しました。

ちなみにファイルを消さずに上書きになるようnkfコマンドを実行すると0バイトの空ファイルになります。

UTF-8からShift-JISへ変換する場合のコマンドは”nkf -s”になります。nkfはコマンド”brew install nkf”で前もってインストールしておきます。

JavaでしたらPathオブジェクトを文字列に変換する必要があるのですが、Pythonは不要なのでとても楽ですね。動的型付けのいいところです。

昨年9月に書いた変換先のフォルダ作成を含めたコードをよりシンプルにしました。

import glob,subprocess

dir = "/JavaSilver_samplecode"
paths_sjis = glob.glob(dir + "/**/*.java", recursive=True)

print(paths_sjis)

# 変換ファイルパス作成(フォルダ名を変更しファイル名はそのまま)
paths_utf8 = list()
for path in paths_sjis:
    path_utf8 = path.replace("JavaSilver_samplecode","JavaSilver_samplecode_utf8")
    paths_utf8.append(path_utf8)
    
print(paths_utf8)

for a,b in zip(paths_sjis,paths_utf8):
    cmd = "nkf -w %s > %s" %(a,b)
    subprocess.call(cmd, shell=True)