stmtkブログ

Python中心の技術ブログです。

【Python】ファイル名の日付をアメリカ式から日本式に変換する

機能

ファイル名の日付をアメリカ式から日本式に変換するPythonプログラムです。

  • アメリカ式:DD-MM-YYYY、D-M-YYYY
  • 日本式:YYYY-MM-DD、YYYY-M-D

実行前

実行後

サンプル動画

youtu.be

プログラム

#! Python3
# 機能
#  ファイル名の日付をアメリカ式から日本式に変換する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python file_name_date_converter.py パス

import os
import re
import sys
import shutil

# アメリカ式の日付の正規表現
date_pattern = re.compile(
    r"""
    ^(.*?)
    ((0|1)?\d)-
    ((0|1|2|3)?\d)-
    ((19|20)\d\d)
    (.*?)$
    """,
    re.VERBOSE,
)

# 新ファイル名を取得する関数
def get_new_file_name(file_name):
    # 日付を含むファイル名を検索
    mo = date_pattern.search(file_name)
    if mo == None:
        return None

    # ファイル名を分割
    before_part = mo.group(1)
    month = mo.group(2)
    day = mo.group(4)
    year = mo.group(6)
    after_part = mo.group(8)

    # 日本式の日付のファイル名にする
    return before_part + year + "-" + month + "-" + day + after_part


# ファイル名の日付をアメリカ式から日本式に変換する関数
def convert_file_name_date(path):
    for file_name in os.listdir(path):
        # 新ファイル名取得
        new_file_name = get_new_file_name(file_name)
        if new_file_name == None:
            continue

        # リネーム
        print('Renaming "{}" to "{}"...'.format(file_name, new_file_name))
        shutil.move(os.path.join(path, file_name), os.path.join(path, new_file_name))


if len(sys.argv) != 2:
    sys.exit("python file_name_date_converter.py パス")

convert_file_name_date(sys.argv[1])

使い方

  1. Pythonを実行する

実行コマンド

python file_name_date_converter.py パス

参考文献

www.oreilly.co.jp