Pythonでファイルの拡張子を変更する方法をわかりやすく解説
Pythonでファイルの拡張子を変更する場合、本質的には「ファイル名の変更」を行うことと同じです。具体的には、ファイル名をドット(.)で分割し、最後の要素(現在の拡張子)を新しい拡張子に置き換えてから、リネームを実行します。
この操作には、標準ライブラリの os.rename メソッドを使うのが一般的です。また、os.path.splitext を使えば、拡張子を除いたベース名(ファイル名本体)を簡単に取り出せます。
基本的な実装例
>>> import os >>> my_file = 'my_file.txt' >>> base = os.path.splitext(my_file)[0] >>> os.rename(my_file, base + '.bin')
このコードを実行すると、my_file.txt が my_file.bin に変更されます。
処理の流れを解説
- os.path.splitext(my_file):ファイル名をベース名と拡張子に分割します。
('my_file', '.txt')のようなタプルが返されます。 - [0]:タプルの最初の要素、つまり拡張子を除いたベース名(
'my_file')を取得します。 - os.rename(元のファイル名, 新しいファイル名):ベース名に新しい拡張子
'.bin'を連結した名前へ、実際にファイルをリネームします。
pathlibを使ったモダンな書き方
Python 3.4以降では、より直感的に書ける pathlib モジュールを使う方法もおすすめです。
>>> from pathlib import Path
>>> p = Path('my_file.txt')
>>> p.rename(p.with_suffix('.bin'))with_suffix() を使えば、拡張子だけを置き換えた新しいパスを簡単に生成できます。コードの可読性が高まるため、新しいプロジェクトではこちらを採用するケースも増えています。
注意点
- 変更先のファイル名がすでに存在する場合、環境によっては上書きされたりエラーが発生したりするため、事前に存在チェックを行うと安全です。
- ファイルが開かれている状態や、権限がないディレクトリではリネームに失敗することがあります。
try-exceptでエラーハンドリングを入れておくと安心です。
-
Pythonでファイルを読み取り専用で開く方法をわかりやすく解説
Pythonで読み取りモード(r)を使ってファイルを開く基本Pythonでファイルを読み取り専用(リードモード)として開くには、open()関数の第2引数に r を指定します。なお、「r」はデフォルトのモードでもあるため、実際には省略して書くことも可能です。f = open(my_file.txt, r) file_content = f.read() f.close()上記のコードでは、my_file.txt を読み取りモードで開き、read()メソッドでファイルの内容をすべて読み込んで、変数 file_content に格納しています。処理が終わったら close() メソッドを呼び出し、
-
Pythonでファイルに書き込むには?writeモードでのファイル操作を解説
Pythonでファイルにデータを書き込むには、open()関数の第2引数に書き込みモード w を指定します。ここでは、基本的な使い方と、より安全な書き方を紹介します。基本の書き方:open()とclose()を使う最もシンプルな方法は、w モードでファイルを開き、write() メソッドで文字列を書き込んだ後、close() でファイルを閉じることです。f = open(my_file.txt, w) f.write(Hello World) f.close()このコードを実行すると、my_file.txt が書き込みモードで開かれ、ファイルの内容が「Hello World」で上書きされます。