はじめに
Pythonの開発でファイル名の操作について調べてみたのでサンプルプログラムを作りました。
この記事では、Pythonを使ってファイル名の変更する処理「 os.rename 」を使って簡単なプログラムを実装しながら説明していきます。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
ファイル名を変更する方法
ファイル名を変更するためには、「 os.rename 」を使います。まず初めに「os」をインポートします。
import os
そして、以下の方法でメソッドを呼び出します第一引数に「変更対象のファイル名」、第二引数に「変更後のファイル名」を指定します。
os.rename(変更対象のファイル名, 変更後のファイル名)
サンプルプログラムの仕様
こんなものを作ってみたい
- コマンドラインから引数を受け取り、第一引数のファイル名を第二引数のファイル名に変更する
- ファイル名が存在するかチェックする
こんなプログラムだったら、手で修正すればいいじゃんという突っ込みはなしでお願いします。
作るために必要な知識
実装するために必要な知識は以下の記事で紹介しています。
コマンドライン引数からパラメータを取得する
ファイルの存在チェック
実装してみた
実装したソースがこちらになります。今回の処理はそこまで難しくないのでエラー系の処理も実装しています。
引数のチェック
始めにテスト的な部分をかたずけていきます。動かしながら説明していきます。このプログラムは引数を2個受け取る想定で作っているので引数が2個以外はエラーを出すようにしています。試しに引数1個の状態で動かしてみます。この場合は正しくエラーが出力されますね。
$rename.py aaa
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/09/引数不正.jpg?resize=332%2C68&ssl=1)
ファイルの存在チェック
次にファイルの存在チェックです。9行目の「 os.path.isfile(path1) 」でファイルが存在しているかチェックしています。存在する場合は「TRUE」を存在しない場合は「FALSE」を返します。エビデンスが不十分ですが「aaa」というファイルは存在しない状態で実行しています。なので、「ファイルが存在しません」というエラーが出力されました。
$rename.py aaa bbb
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/09/ファイル名不正.jpg?resize=273%2C68&ssl=1)
ファイル名の変更
ここからが、本題です。
スポンサーリンク
今回の実行で「work.txt」を「bk_work.txt」に変更しようと思います。
以下のイメージを見るとフォルダに「work.txt」が配置されています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/09/変更前.jpg?resize=598%2C157&ssl=1)
それではプログラムを実行してみます。第一引数に「work.txt」を第二引数に「bk_work.txt」を指定します。
$rename.py work.txt bk_work.txt
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/09/プログラム実行.jpg?resize=326%2C54&ssl=1)
実行後にフォルダを再度確認します。ファイル名が変更されて「 bk_work.txt 」になっていますね。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/09/変更後.jpg?resize=599%2C189&ssl=1)
ファイルが存在しない場合
ちなみに、チェック処理を行わないで、不正なファイル名を指定すると以下のエラーが出力されます。
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。: 'aaa' -> 'bbb'
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/エラー.jpg?resize=751%2C123&ssl=1)
まとめ
ファイル名の変更をするには 「os」をインポートする。
「os.rename(変更対象のファイル名, 変更後のファイル名)」でファイル名を変更する。