R05(2023)/07m/23d
今回の環境等
macOS Ventura 13.4.1
Chrome 115.0.5790.102
ChatGPT(無償版)
最初にChatGPT に入れた指事が下記です。
「macOS 13.4(22F66) を使用しています。Xcode 14.3.1 を使用可能です。
そこでmac 用プログラム言語Swift を使用しファイル/Users/apple/Documents/temp.txt の作成日時と変更日時を0.0000 秒まで表示するプログラムを作成してください。」
その後、諸々やり取りして「話を最初の「特定のファイルの作成日時をナノ秒まで取得する」に戻しますがSwift ではできず、C 言語ではできるとの結論でした。そこでC 言語以外でナノ秒まで作成日時を表示可能なプログラム言語は有りますか。macOS Ventura で使える言語でお教えください。」との指事を出しました。結果、下記がShell Script として返ってきました。
import os
import stat
file_path = '/Users/apple/Documents/temp.txt'
try:
# ファイルの属性を取得
file_attributes = os.stat(file_path)
# ファイルの作成日時を取得
creation_time_ns = file_attributes.st_birthtime_ns
# ナノ秒まで表示
print(f"作成日時: {creation_time_ns} ナノ秒")
except FileNotFoundError:
print(f"ファイルが見つかりません: {file_path}")
except Exception as e:
print(f"エラーが発生しました: {e}")
ところが、このコードはどうやらPython3.12(beta) 用のコードのようでmacOS Ventura 13.4.1 では「st_birthtime_ns」の部分でエラーが出ます。なので下記のように修正しました。
#!/usr/bin/env python3
import os
import stat
file_path = '/Users/niki/Desktop/incompatibleplguins.png'
try:
# ファイルの属性を取得
file_attributes = os.stat(file_path)
# ファイルの作成日時を取得
creation_time_ns = file_attributes.st_birthtime
# ナノ秒まで表示
print(f"作成日時: {creation_time_ns} ナノ秒")
except FileNotFoundError:
print(f"ファイルが見つかりません: {file_path}")
except Exception as e:
print(f"エラーが発生しました: {e}")
「file_attributes.st_birthtime_ns」を「file_attributes.st_birthtime」に変えただけです。後はShebang を先頭につけたしています。出た結論はPython3.11.4 ではマイクロ秒間でしか表示できませんでした。更に上記のスクリプトだとUNIX秒で表示されるのでネットの情報を参考に下記のように「日時秒」の表示ができるように変更しました。
#!/usr/bin/env python3
import os
import stat
import datetime
file_path = '/Users/niki/Desktop/incompatibleplguins.png'
try:
# ファイルの属性を取得
file_attributes = os.stat(file_path)
# ファイルの作成日時を取得
#creation_time_ns = file_attributes.st_birthtime_ns
creation_time_ns = file_attributes.st_birthtime
# 日時に変換
dt = datetime.datetime.fromtimestamp(creation_time_ns)
# ナノ秒まで表示
#print(f"作成日時: {creation_time_ns} ナノ秒")
print(f"作成日時: {dt} マイクロ秒")
except FileNotFoundError:
print(f"ファイルが見つかりません: {file_path}")
except Exception as e:
print(f"エラーが発生しました: {e}")
なお手抜きしているので「file_path = '/Users/niki/Desktop/incompatibleplguins.png'
」で作成日時を取得したいファイルのPath を渡しています。