誰かがUNIXシステムでのos.path.getmtime(path)
とos.path.getctime(path)
の違いを教えてください。 python docsの定義に従って:
os.path.getmtime(path)
パスの最終変更時刻を返します。戻り値は、エポックからの秒数を示す数値です(timeモジュールを参照)。ファイルが存在しないかアクセスできない場合はos.errorを発生させます。
os.path.getctime(path)
システムのctimeを返します。これは、一部のシステム(Unixなど)では最後の変更時刻であり、他のシステム(Windowsなど)では、パスの作成時刻です。戻り値は、エポックからの秒数を示す数値です(timeモジュールを参照)。ファイルが存在しないかアクセスできない場合はos.errorを発生させます。
それは基本的にそれらがunix/systemsで使われたときに同じものであることを意味しますか?
#!/usr/bin/python
import os
print os.path.getmtime('File')
print os.path.getctime('FIle')
どちらのプリントにも同じ値が表示されます。
基本的に、最終更新日ではなく、ファイルの最終作成日を探しています。 UNIXで同じことを達成する方法はありますか?
Mtimeは、ファイルの内容が最後に変更された時刻を示します。これは、UNIXシステムではさまざまな方法で変更できます。多くの場合、バックアップからファイルを復元すると、mtimeは、バックアップが作成される前に内容が最後に変更された時刻を示すように変更されます。
Ctimeは、iノードが最後に変更された時刻を示します。これは変更できません。上記のバックアップの例では、ctimeはファイルの復元時間を反映しています。さらに、ファイルのアクセス許可などが変更されると、ctimeが更新されます。
残念ながら、通常、ファイル作成の元の日付を見つける方法はありません。これは、基礎となるファイルシステムの制限です。 ext4ファイルシステムがiノードに作成日を追加したと思います。AppleのHFSもそれをサポートしていますが、Pythonでどのように取得するかはわかりません。 (C stat
関数と対応するstat
コマンドは、それをサポートするファイルシステムに関する情報を表示するはずです。)
os.path.getmtime()
とos.path.getctime()
の両方がUnixシステムで使用されているstatのmanページから:
フィールド
st_mtime
は、mknod(2)
、truncate(2)
、utime(2)
およびwrite(2)
などのファイル変更によって変更されます(0バイトを超える) )。また、ディレクトリのst_mtime
は、そのディレクトリ内のファイルの作成または削除によって変更されます。st_mtime
フィールドは、所有者、グループ、ハードリンクカウント、またはモードの変更に対しては変更されません。
...フィールド
st_ctime
は、書き込みまたはiノード情報(つまり、所有者、グループ、リンク数、モードなど)を設定することによって変更されます。
したがって、これらは同じではありません。
これは技術的にはプログラミングの問題ではないため、Stack Overflowに出すべきではありませんが、求める答えを見つけることができます here —これはctime mtime atime
の最初のGoogle結果です。短い答え:ctime
は、ファイルの所有権または権限が変更されたとき、およびファイル内のデータが変更されたときに変更されます。 mtime
は、ファイル内のデータが変更されたときにのみ変更されます。