ファイル名またはディレクトリ名を変更する

Python の os モジュールで用意されている rename 関数を使って、ファイル名またはディレクトリ名を変更する方法について解説します。

※ pathlib モジュールを使ってファイル名やディレクトリ名を変更するには「ファイル名またはディレクトリ名を変更する(pathlibモジュール)」を参照されてください。

(Last modified: )

ファイル名またはディレクトリ名を変更する

ファイル名またはディレクトリ名するには os モジュールで用意されている rename 関数を使用します。

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

1 番目の引数に指定したパスが示すファイル名またはディレクトリ名を、 2 番目の引数に指定したパスが示すファイル名またはディレクトリ名に変更します。

例えば次のように記述します。下記はファイル名を変更した場合です。

import os

oldpath = './test/book.txt'
newpath = './test/memo.txt'
os.rename(oldpath, newpath)

ファイル名を変更する場合、変更前と変更後でファイルのディレクトリが異なっていても問題ありません。

import os

oldpath = './test/book.txt'
newpath = './test/back/memo.txt'
os.rename(oldpath, newpath)

ただし、変更後のディレクトリが存在しない場合 FileNotFoundError が発生します。

import os

oldpath = './test/book.txt'
newpath = './back/memo.txt'
os.rename(oldpath, newpath)
>> FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: './test/book.txt' -> './back/memo.txt'

ディレクトリ名を変更する場合も同じです。

import os

oldpath = './test/back'
newpath = './test/old'
os.rename(oldpath, newpath)

ディレクトリ名を変更する場合も、変更前と変更後でディレクトリの親ディレクトリが変更されていても問題ありません。

import os

oldpath = './test/back'
newpath = './test/img/back'
os.rename(oldpath, newpath)

ただし、変更後のディレクトリの親ディレクトリが存在しない場合 FileNotFoundError が発生します。

import os

oldpath = './test/back'
newpath = './test/log/back'
os.rename(oldpath, newpath)
>> FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: './test/back' -> './test/log/back'

Windows 環境の場合、変更後のパスが既に存在した場合 FileExistsError が発生します。

import os

oldpath = './test/book.txt'
newpath = './test/address.txt'
os.rename(oldpath, newpath)
>> FileExistsError: [WinError 183] 既に存在するファイルを作成することはできません。: './test/book.txt' -> './test/address.txt'

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample16-1.py という名前で保存します。

import os

oldpath = './test/book.txt'
newpath = './test/memo.txt'
os.rename(oldpath, newpath)

oldpath = './test/back'
newpath = './test/old'
os.rename(oldpath, newpath)

プログラムと同じディレクトリの中に test という名前のディレクトリがあり、 test ディレクトリの中に次のようにファイルとディレクトリが含まれています。

ファイル名またはディレクトリ名を変更する(1)

その後で、次のように実行してください。

python sample16-1.py

ファイル名またはディレクトリ名を変更する(2)

ファイル名およびディレクトリ名がそれぞれ変更されました。

ファイル名またはディレクトリ名を変更する(1)

-- --

Python の os モジュールで用意されている rename 関数を使って、ファイル名またはディレクトリ名を変更する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。