Pythonでディレクトリ内の全ファイルに再帰的にtouch(タイムスタンプ更新)する方法
ディレクトリツリー内のすべてのファイルに再帰的にtouch(アクセス時刻・更新時刻の更新)を行いたい場合は、os.walkを使ってディレクトリを順にたどり、見つかった各ファイルに対してos.utime(ファイルパス)を実行します。
os.walkとos.utimeを使った基本的な例
import os
# ディレクトリツリーを再帰的に走査
for root, dirs, files in os.walk(path):
for file in files:
# タイムスタンプを現在時刻に更新
os.utime(os.path.join(root, file))このコードでは、os.walkが指定したパス以下のサブディレクトリを自動的に再帰処理し、各階層のroot(現在のディレクトリ)、dirs(サブディレクトリ一覧)、files(ファイル一覧)を返します。ファイルごとにos.path.join(root, file)でフルパスを組み立て、os.utimeに渡すことでタイムスタンプが更新されます。
pathlibモジュールを使う方法(Python 3.4以降)
Python 3.4以降では、より直感的なpathlibモジュールのPath.touch()メソッドを直接使うこともできます。
from pathlib import Path
import os
# ディレクトリツリーを再帰的に走査
for root, dirs, files in os.walk(path):
for file in files:
Path(os.path.join(root, file)).touch()Path.touch()は、対象ファイルが存在しない場合には新規作成し、存在する場合にはタイムスタンプを更新してくれるため、コードがシンプルになり可読性も向上します。
補足:エラーハンドリングについて
実際の運用では、読み取り権限がないファイルや壊れたシンボリックリンクなどに遭遇することがあります。そのようなケースに備えて、try-exceptブロックでエラーを捕捉しておくと安全です。
from pathlib import Path
import os
for root, dirs, files in os.walk(path):
for file in files:
try:
Path(os.path.join(root, file)).touch()
except OSError as e:
print(f"スキップ: {file} ({e})")このようにすることで、一部のファイルでエラーが発生しても処理全体が中断されることなく、残りのファイルへのtouch操作を続行できます。
-
Pythonでフォルダ内のすべてのExcelファイルを一括マージする方法
Pythonを使えば、フォルダ内に散らばった複数のExcelファイルをわずか数行のコードで1つのファイルにまとめることができます。本記事では、標準ライブラリのglobモジュールと、データ分析に欠かせないpandasを組み合わせて、Excelファイルを一括結合する手順を詳しく解説します。 前提条件:必要なパッケージのインストール まず、Excelファイルを読み書きするために以下のパッケージが必要です。まだインストールしていない場合は、pipコマンドで導入しておきましょう。 pip install openpyxl xlrd openpyxl:xlsx形式(Excel 2007以降)の読み書きに
-
PythonでPowerPointファイルを自動作成する方法!python-pptxの基本を徹底解説
はじめに誰もが一度はPowerPointのプレゼンテーション資料を作成した経験があるのではないでしょうか。多くの場合、Microsoft PowerPointやGoogleスライドといったGUIツールを使うことが多いでしょう。しかし、ライセンスを持っていなかったり、インターネット環境にアクセスできなかったりすることもあります。あるいは、「プログラマーらしく」コードで自動生成したいと考える方もいるはずです。ご安心ください。そんなときこそPythonの出番です!この記事では、Pythonを使ってPowerPointファイルを作成し、コンテンツを追加する方法を解説します。それでは早速始めましょう!準