0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ファイル名の先頭に作成日付を付けて管理しやすくしよう!

Posted at

こんにちは。オンライン授業により大量のPDFファイルがPCにたまっています。
ぱっと見てファイルの時系列が分かると便利なのですが, いちいち自分で入力していくのは面倒くさいので自動化してみましょう。

目標とする仕様

"hello.pdf"(2021-06-09作成)のようなファイルがあった場合, "0609_hello.pdf"とリネームします。
ただし, "0604_hoge.pdf"(2021-06-09作成)のようなファイルはそのままの名前で残すこととします。
##コード

rename.py
import glob
import os
import time
import mimetypes
import re 

def rename(files):
    for f in files:
        file_type = mimetypes.guess_type(f)[0]
        if file_type == "application/pdf": #pdfかどうか
            (i,old_name) = os.path.split(f)           
            if not re.match(r"[0-1]\d{3}",old_name): #先頭にすでに日付が入っていたらスキップ。数字4桁でマッチすると2021_hoge.pdfのようなものも許してしまうので先頭ではじきましょう。
                t =  time.localtime(os.path.getctime(f))
                date = str(format(t.tm_mon,'02')) + str(format(t.tm_mday,'02')) #2桁で月日を表現
                new_name = date + "_"+ old_name
                new_path = os.path.join(i,new_name)
                os.rename(f,new_path)       

def collect_files(p,r): #再帰的に
    d = glob.glob(os.path.join(p,"*"))
    for i in d:
        if os.path.isdir(str(i)):
            collect_files(i,r)
        else:
            r.append(i)
    return r

if __name__ == "__main__":
    a = collect_files("./",[])
    rename(a)

終わりに

コードは見たまんまです。意外と汎用性が高そうですね。
os.path.splitなどパスを扱うライブラリが想像以上にしっかりしていて便利でした。覚えておこう......
より良いコードなどありましたらお教えいただけますと幸いです。
では, この辺で

0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?