【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フォルダ以下のファイル名を一括でリネームします。

スポンサーリンク
Amazon

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

関連記事

あなたの腹痛を劇的に改善するたった一つのシンプルな方法

はじめに 私は昔からよくおなかを壊してトイレに駆け込むことが多かった

無料のDAZ Studioに課金しまくってわかったこと

はじめに  初めにお断りしておきますがこれから書く意見はあくまで素人

[最後のレストラン]ジャンヌ「出来らあっ!」

はじめに 「スーパーくいしん坊」という漫画の有名なシーンがこちら

[日本株]特定の個別銘柄の大株主一覧をネットで見る方法

 個別株を購入する際に大株主情報をネットで検索して参考にしようと思った

[DAZ Studio]目線をカメラに向ける方法

DAZ Studioでフィギュアの目線をカメラに向ける方法についてです

→もっと見る

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