【Python】フォルダ内のカッコ付き数字ファイルを一括でリネームするスクリプト

公開日: : Python, 自動化

スポンサーリンク

はじめに

タイトルどおりなのですが、指定フォルダ内のファイルのファイル名にあるカッコつき数字、例えば(1)や(2)、(3)…といったものですが、それを一度に消すスクリプトをPython3で作成しましたので紹介します。

具体的には例えば「test(2).txt」といったファイル名があったら「test.txt」にするというものです。これをファイルごとでなくフォルダ内のファイルに一括で処理します。

スクリプト

このスクリプトに「test.py」などと名前を付けて保存します。名前はなんでもいいです。

#!/usr/bin/env python
# coding: UTF-8
import sys
import os
import re

#引数の取得
argvs = sys.argv
argc = len(argvs)

#引数が無い場合は終了
if (argc != 2):
    print ('引数にフォルダ名を入力')
    quit()
 
#ディレクトリ
dir = argvs[1]

#フォルダ内のファイルを取得
files = os.listdir(dir)
for file in files:
    pattern = re.compile("\([0-9]+\)")

    #カッコつきファイル名でなければスキップ
    if pattern.search(file)==False:
        continue

    #カッコつき数値を消す
    new_file = re.sub("[\(|(][0-9]+[\)|)]","",file)
    new_path = dir+"\\"+new_file

    #既に存在するファイルの場合スキップ
    if os.path.exists(new_path):
        continue

    #ファイル名を置換する
    print (new_file)
    os.rename(dir+"\\"+file,new_path )

基本的にはコメントにある通りのことをしています。正規表現でカッコつきの数字を持つファイルを探しますが、このとき、半角だけでなく全角のカッコも一応探します。対象が見つかったらそれを置換で消してリネームするという処理をフォルダ内のファイルを対象として実行します。

実行方法

Pythonのインストール方法は省略します。
Windowsであればコマンドプロンプト、Ubuntuであればターミナルを開きます。多分Windows以外でも動くと思いますが、私はWindows7でしか動作確認はしていません。

対象となるファイルが入ったフォルダ(ディレクトリ)まで「cd」を駆使して移動します。そのフォルダをデスクトップ下の「target」という名前のものとしてカレントディレクトリがデスクトップだとすると下記のようにコマンドを打ちます。

C:\Users\gagambo\Desktop>python test.py target

test.pyは先ほど作成したスクリプトです。引数でtargetというフォルダ名を渡しています。これでtargetフォルダ以下のファイル名を一括でリネームします。

スポンサーリンク
  • このエントリーをはてなブックマークに追加

関連記事

WordPressサイトのSSL対応(HTTPS化)手順のまとめ【さくらサーバー】

先週頃にこのサイトをSSL対応しましたのでその流れについてまとめておき

【Google Charts】動的にグラフを更新する方法

はじめに Webサイト上でグラフを描こうと思った場合、いくつかのJa

体重変化量計算シミュレータ【ダイエット/肥満】

ツール本体 入力 カロリー入力 1日の余剰摂取/消費カロリー

おサイフケータイ対応ストレージ32GBのSIMフリースマホまとめ【2017年秋版】

はじめに SIMフリーの格安スマホのおサイフケータイ機能付きのもので

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑