【Python入門】os.renameでファイル名を変更する方法を解説!

ファイルやディレクトリを操作すると、以下のようなケースが発生することがあります。

ファイル名を変更するにはどうすればいいの?
ディレクトリにあるファイルを一括で変更するにはどうすればいいの?

そこで今回はファイル名を変更するための関数os.renameについて紹介いたします。

  • 【基礎】os.renameとは
  • 【基礎】os.renameの使い方
  • 【発展】os.renameでファイルを一括変更する方法

ファイル名を変更する方法について、初心者でも理解できるように解説していますので、ぜひ参考にしてみてください。

ファイル名を変更する方法

os.renameとは

os.renameを使用すると既存のファイル名を引数で指定した名称に変更することができます。os.renameは第一引数に変更前のファイル名を、第二引数には変更後のファイル名を指定します。

import os
os.rename(変更前ファイル、変更後ファイル)

使用するためにはosモジュールをインポートしておく必要があります。
引数には絶対パスまたは相対パスで削除するファイルを指定します。

os.renameの使い方

ここでは、実際にos.renameを使用してファイル名を変更してみましょう。以下のサンプルでは、os.renameで「sample_00.txt」を「sample_01.txt」に変更しています。

サンプルプログラム:

import os

# 変更前ファイル
path1 = './dir/sample_00.txt'

# 変更後ファイル
path2= './dir/sample_01.txt'

# ファイル名の変更 
os.rename(path1, path2) 

# ファイルの存在確認 
print(os.path.exists(path2))

実行結果:

True

ここでは、最後にos.path.exists関数でファイルの存在有無を確認しています。os.path.existsはファイルが存在するとTrue、存在しないとFalseを返すので、変更したファイル名が存在することがわかります。

なお、対象のファイルが存在しない場合はエラー「FileNotFoundError」が発生しますので、指定したディレクトリにファイルが必ず存在するかわからない場合は、事前に紹介したos.path.exists関数でファイルチェックを行うとよいでしょう。

また、変更後のファイルが既に存在した場合、ファイルが上書きされてしまうので注意しましょう。

ファイル名を一括で変更する方法

rename関数で「一括でファイル名を変更したい」場合は変更対象のファイルを一括で取得してfor文のループで1つずつファイルを変更する方法があります。

サンプルプログラム:

import glob
import os

# 拡張子.txtのファイルを取得する
path = './dir/*.txt'
i = 1

# txtファイルを取得する
flist = glob.glob(path)
print('変更前')
print(flist)

# ファイル名を一括で変更する
for file in flist:
  os.rename(file, './dir/test' + str(i) + '.txt')
  i+=1

list = glob.glob(path)
print('変更後')
print(list)

実行結果:

変更前
['./dir/sample1.txt', './dir/sample2.txt', './dir/sample3.txt']
変更後
['./dir/test1.txt', './dir/test2.txt', './dir/test3.txt']

このサンプルではglob関数を使用してアスタリスクによるパターンマッチング(*.txt)により、拡張子が.txtのファイルを全て取得しています。

取得したファイルリストをfor文のループの中で1つずつos.rename関数でtest_x.txtに変更しています。

ファイル操作についてもっと知りたい方へ

Pythonにはファイル・ディレクトリを操作するためのさまざまな関数が用意されています。ファイル・ディレクトリ操作全般について知りたい方は以下の記事も合わせて参考にしてみてください。

まとめ

ここでは、ファイル名を変更するos.renameについて解説しました。

  • os.renameとは
  • os.renameの使い方
  • os.renameでファイルを一括変更する方法


os.renameを使用すれば、簡単にファイル名の変更が可能ですので使い方は理解しておきましょう。

もし、ファイル名を変更する方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。