os.utime
Mac (Mac OS X 10.6.2、Python 2.6.1 を実行) で変更時刻を正しく設定するのに問題があり/usr/bin/python
ます。これはtouch
ユーティリティと一致しておらず、Finder の「情報を取得」ウィンドウに表示されるプロパティとも一致していません。
次のコマンド シーケンスを検討してください。プレーン テキストの「作成」時間と「変更」時間は、ファインダーの「情報を取得」ウィンドウに表示される属性を参照します。os.utimeは引数を取ります(filename, (atime, mtime))
。
>>> import os
>>> open('tempfile','w').close()
'created' と 'modified' はどちらも現在の時刻です。
>>> os.utime('tempfile', (1000000000, 1500000000) )
「作成」は現在の時刻、「変更」は 2017 年 7 月 13 日です。
>>> os.utime('tempfile', (1000000000, 1000000000) )
「作成」と「変更」はどちらも 2001 年 9 月 8 日です。
>>> os.path.getmtime('tempfile')
1000000000.0
>>> os.path.getctime('tempfile')
1269021939.0
>>> os.path.getatime('tempfile')
1269021951.0
...しかし、それを反映os.path.get?time
しos.stat
ません。
>>> os.utime('tempfile', (1500000000, 1000000000) )
'created' と 'modified' はどちらも 2001 年 9 月 8 日のままです。
>>> os.utime('tempfile', (1500000000, 1500000000) )
「作成」は 2001 年 9 月 8 日、「変更」は 2017 年 7 月 13 日です。
これが Python の問題なのか、Mac の統計の問題なのかはわかりません。Python シェルを終了して実行すると
touch -a -t 200011221234 tempfile
予想どおり、変更も作成時間も変更されません。それから私は走ります
touch -m -t 200011221234 tempfile
「作成」時間と「変更」時間の両方が変更されます。
何が起こっているのか誰にも分かりませんか?Mac で変更時刻と作成時刻を一貫して変更するにはどうすればよいですか? (はい、Unixy システムには「作成時間」がないことは承知しています。)
Chris Johnsen のスクリプトを実行した結果:
seth@local:~$ /usr/bin/python timetest.py tempfile 5
initial:
(1269631281.0, 1269631281.0, 1269631281.0, 1269631281, 1269631281, 1269631281)
test: (1000000000, 1000000000)
(1000000000.0, 1000000000.0, 1269631281.0, 1000000000, 1000000000, 1269631281)
(1269631281.0, 1000000000.0, 1269631281.0, 1269631281, 1000000000, 1269631281)
test: (1000000000, 1500000000)
(1000000000.0, 1500000000.0, 1269631286.0, 1000000000, 1500000000, 1269631286)
(1269631286.0, 1500000000.0, 1269631286.0, 1269631286, 1500000000, 1269631286)
test: (1500000000, 1000000000)
(1500000000.0, 1000000000.0, 1269631291.0, 1500000000, 1000000000, 1269631291)
(1269631291.0, 1000000000.0, 1269631291.0, 1269631291, 1000000000, 1269631291)
test: (1500000000, 1500000000)
(1500000000.0, 1500000000.0, 1269631296.0, 1500000000, 1500000000, 1269631296)
(1269631296.0, 1500000000.0, 1269631296.0, 1269631296, 1500000000, 1269631296)
演習の最後に、ファインダーに表示される「作成」日は 9/8/01 で、「変更」日は 7/13/17 です。(アクセス日は、おそらくスポットライトのおかげで、私が読んだように、おおよそ「今」です。) ファインダーに表示される作成日と変更日は、まだ意味がありません。