Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでファイルの名前を変更する方法【os.renameとshutil.moveの使い方】

Pythonでファイル名を変更する基本の方法

Pythonでファイルの名前を変更するには、標準ライブラリの os モジュールにある rename() メソッドを使うのが最も一般的な方法です。

例えば、カレントディレクトリに a.txt というファイルがあり、これを b.txt にリネームしたい場合は、次のように記述します。

os.rename() を使った例

>>> import os
>>> os.rename('a.txt', 'b.txt')

このコードを実行すると、a.txt のファイル名が b.txt に変更されます。非常にシンプルで、単純なリネーム処理には最適です。

shutilモジュールを使う方法

もう一つの方法として、shutil(shell utilities)モジュールを使用することもできます。shutil.move(移動元, 移動先) を呼び出すと、指定したパスにあるファイルやフォルダを別のパスへ移動でき、戻り値として新しい場所の絶対パスが文字列で返されます。

移動先のパスが元のパスと同じディレクトリ内の別のファイル名であれば、結果的に名前の変更と同じ動作になります。

shutil.move() を使った例

>>> import shutil
>>> shutil.move('a.txt', 'b.txt')

異なるディレクトリ間でファイルを扱う場合

対象のファイルが現在の作業ディレクトリとは別の場所にある場合は、どちらの方法でも絶対パス(または相対パス)を明示的に指定する必要があります。

>>> import os
>>> os.rename('/home/user/docs/a.txt', '/home/user/docs/b.txt')

注意点:エラーハンドリング

リネーム処理を行う際は、以下のようなエラーが発生する可能性があるため、必要に応じて例外処理を組み合わせると安全です。

  • FileNotFoundError: 指定したファイルが存在しない場合に発生します。
  • FileExistsError: os.rename() で移動先に同名のファイルがすでに存在する場合に発生します(Windows環境など)。なお、Unix系OSでは上書きされる点にも注意が必要です。
import os

try:
    os.rename('a.txt', 'b.txt')
    print('ファイル名を変更しました')
except FileNotFoundError:
    print('指定されたファイルが見つかりません')
except FileExistsError:
    print('同名のファイルがすでに存在します')

まとめ

Pythonでのファイル名変更は、os.rename()shutil.move() を使えば簡単に実現できます。単純なリネームなら os.rename()、ディレクトリ間の移動も兼ねたい場合や柔軟な制御が必要な場合は shutil.move() を選ぶとよいでしょう。用途に応じて使い分けてください。

  1. PythonでPDFファイルをExcelファイルに変換する方法を解説

    Pythonには、さまざまな処理に対応できる豊富なライブラリが用意されています。本記事では、その中でもPDFファイルをExcelファイルに変換する方法について詳しく解説します。PythonでPDFをCSV形式に変換できるパッケージは複数存在しますが、ここではTabula-pyモジュールを使用します。Tabula-pyの主要部分はJavaで書かれており、PDFドキュメントを読み込み、PythonのDataFrameとして取得したり、JSONオブジェクトに変換したりすることができます。事前準備:JavaのインストールTabula-pyを使用する前に、システムにJavaが事前にインストールされている

  2. Pythonでファイルを削除する方法をわかりやすく解説

    Pythonでファイルを削除する基本の方法 Pythonでは、標準ライブラリのosモジュールを使うことで、単一のファイルや空のフォルダ(ディレクトリ)を簡単に削除できます。外部ライブラリのインストールは不要で、import osと記述するだけですぐに利用できるのが魅力です。 os.remove() でファイルを削除する たとえば、カレントディレクトリにある my_file.txt というファイルを削除したい場合は、次のように記述します。 >>> import os >>> os.remove(my_file.txt) os.remove() の引数には、削