Help us understand the problem. What is going on with this article?

ファイル名が一部不明な場合のリネーム

More than 1 year has passed since last update.

ファイル名が一部不明な場合のリネーム (2019/01/06)

ファイル名が一部不明な場合にリネームするコードをPythonで書いてみる。

例えば「text@@@@.txt」というファイルがあるとする。これを「text.txt」にリネームしたい。だが、ファイル名が「text」から始まっているのは知っているが、「@@@@」が何か分からない場合、どうするか。

ワイルドカードを使って、「text*.txt」としてもエラーになる。「*.txt」ならエラーにはならないが、それでは拡張子がtxtのすべてのファイルが対象になってしまう。

あれこれ試行錯誤した結果、あまりすっきりはしないが、一応の方法を見つけた。例として、作業ディレクトリに「text1234.txt」ファイルがあるとして、これを「text.txt」にリネームする。だが、「1234」の部分が正確にはどうであるかは分かっていない。

import glob
import os
new_name = 'text.txt'
for old_name in glob.glob('text*.txt'):
    os.rename(old_name, new_name)

「text1234.txt」ファイルが「text.txt」ファイルにリネームされる。「なんだ、「text*.txt」でもできるじゃないか」と思われるかもしれない。だが、これはglobを噛ませているからできるのである。

単にos.rename('text*.txt', new_name)とやるとエラーになる。

fxst24
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away