ここでは、Pythonにおける「os.rename」を用いた既存のファイル名を変更する方法について解説しています。
この記事の対象
「os.rename」の型
os.rename(src, dst)
「os.rename()」の基本的な使用方法は、第一引数に現在のファイルのパスを指定します。第二引数には変更後のファイルのパスを指定します。
「os.rename」を用いた使用例
指定のファイル名(単数)の変更
既存のファイル名を「test.png」としたとき、「01-test.png」とファイル名をPythonで変更しました。
プログラム
import sys
import os
#01---変更前ファイル
file1 = 'test.png'
#02---変更後ファイル
file2= '01-test.png'
#03---ファイル名の変更
os.rename(file1, file2)
#04---ファイルの存在確認
print(os.path.exists(file2))
#True
プログラムは上記になります。条件としてこのプログラムと変更したいファイルは同一フォルダにあります。
それでは解説していきます。
#01---変更前ファイル
file1 = 'test.png'
#02---変更後ファイル
file2= '01-test.png'
1の部分は変更前のファイルを指定しています。ここでは、実行するプログラムが同じフォルダにあるので、名前だけを指定しています。実行するプログラムと変更したいファイルが別のフォルダにあるときは、パスを指定してあげる必要があります。注意してください。例えば「file1 = ‘./***/test.png’」のようにします。
2の部分は変更後の名前を指定します。1の部分同様、変更したいファイルが別のフォルダにある場合はパスを指定する必要があります。
#03---ファイル名の変更
os.rename(file1, file2)
ファイル名を変更する場合は「os.rename」関数を用います。引数には1の部分で指定したファイル名と2の部分で指定したファイル名になります。
#04---ファイルの存在確認
print(os.path.exists(file2))
#True
最後にファイル名が変更できたか確かめています。
複数のファイルを連番名にする方法
以下は、Windowsのダウンロードにある複数の「.png」ファイルを連番にするプログラムです。
ダウンロードに以下のようなピクトグラムの画像が複数ある場合に任意の名前を連番にしました。
プログラム
import os
import glob
import datetime
#1---Parameter
search_path = r"C:\hoge\hogehoge\Downloads"#downloadsのpath
search_file = "\*.png"#拡張子の選択
full_path = search_path + search_file#fullのpath
file_name = "\pict"
ext = ".png"#拡張子の設定
#2---情報取得
get_names = glob.glob(full_path)
#3---取得情報を基にfile名変更
for i,name in enumerate(get_names):
re_name = search_path + file_name + str(i+1) + ext
os.rename(name,re_name)
それでは解説していきます。
#1---Parameter
search_path = r"C:\hoge\hogehoge\Downloads"#downloadsのpath
search_file = "\*.png"#拡張子の選択
full_path = search_path + search_file#fullのpath
file_name = "\pict"
ext = ".png"#拡張子の設定
1の部分では主にパスを設定しています。「os.rename()」の第一引数で必要となる基になるpngのパスを作成しています。
#2---情報取得
get_names = glob.glob(full_path)
2の部分では、「glob」を用いてダウンロードにある全ての「.png」を取得しています。
「glob」の使用方法については以下をご参照下さい。
>>>「globを用いたファイル名の取得方法」
#3---取得情報を基にfile名変更
for i,name in enumerate(get_names):
re_name = search_path + file_name + str(i+1) + ext
os.rename(name,re_name)
3の部分では、globで取得した情報を基にfor文で取り出すと同時にiという変数を用いて連番を作成しています。
re_name = search_path + file_name + str(i+1) + ext
上記では、それらを組み合わせて「os.rename」の第二引数で必要となる変更後のファイルのパスを作成しています。
os.rename(name,re_name)
最後に「os.rename」でファイル名を変更しています。
結果
ファイル名が連番になっていることが確認できました。