中学英語811710 views
中学理科1630641 views
ヒストリア290598 views
英語613639 views
小学社会310485 views
世界の国564520 views
MathPython497343 views
小学理科719870 views
教育149510 views
LaTeX962153 views
Help
Tools
NewsSpreadsheetCalendarSlidesTier ListPen ToolIllustrationCrayonPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksWater RippleWater SplashBreaking GlassWood GrainMarble TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsCross SectionsMotion PathMechanicsWavesLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic Theory

English

Python でファイルの更新日時・作成日時を取得する

ファイルの更新日時や作成日時を取得するには os.stat()os.path.getmtime() を使う。

更新日時を取得する

os.path.getmtime() でファイルの最終更新日時を UNIX タイムスタンプで取得できる。

import os
from datetime import datetime

mtime = os.path.getmtime('data.txt')
print(mtime)  # 1703123456.789 のような浮動小数点数

# datetime に変換
dt = datetime.fromtimestamp(mtime)
print(dt)  # 2024-12-21 10:30:56.789000

アクセス日時を取得する

os.path.getatime() で最終アクセス日時を取得できる。

import os

atime = os.path.getatime('data.txt')

ただし、アクセス日時はファイルシステムの設定によっては更新されないことがある。

作成日時を取得する

os.path.getctime() は、Windows ではファイルの作成日時を返すが、Unix 系では最後にメタデータが変更された日時(inode の変更日時)を返す。

import os

ctime = os.path.getctime('data.txt')

Unix 系で真の作成日時を取得するには os.stat()st_birthtime を使うが、これはすべてのファイルシステムで利用できるわけではない。

pathlib を使う方法

pathlib では stat() メソッドでファイル情報を取得する。

from pathlib import Path
from datetime import datetime

path = Path('data.txt')
stat_info = path.stat()

# 更新日時
mtime = datetime.fromtimestamp(stat_info.st_mtime)
print(f'更新日時: {mtime}')

# アクセス日時
atime = datetime.fromtimestamp(stat_info.st_atime)
print(f'アクセス日時: {atime}')

日時をフォーマットする

datetime オブジェクトに変換すれば、任意の形式で表示できる。

import os
from datetime import datetime

mtime = os.path.getmtime('data.txt')
dt = datetime.fromtimestamp(mtime)

print(dt.strftime('%Y年%m月%d日 %H:%M:%S'))  # 2024年12月21日 10:30:56
print(dt.isoformat())  # 2024-12-21T10:30:56.789000

更新日時を変更する

os.utime() を使うとファイルのアクセス日時と更新日時を変更できる。

import os
from datetime import datetime

# 現在時刻に設定
os.utime('data.txt', None)

# 特定の日時に設定
target = datetime(2024, 1, 1, 0, 0, 0)
timestamp = target.timestamp()
os.utime('data.txt', (timestamp, timestamp))  # (atime, mtime)

ファイルの年齢を計算する

ファイルが何日前に更新されたかを計算する例を示す。

import os
from datetime import datetime

mtime = os.path.getmtime('data.txt')
mtime_dt = datetime.fromtimestamp(mtime)
age = datetime.now() - mtime_dt

print(f'{age.days}日前に更新')