unix系统中python-getmtime()和getctime()的区别

mis*_*ded 21 python python-2.6

有人可以指定unix系统os.path.getmtime(path)和之间的区别os.path.getctime(path).根据python文档中的定义:

os.path.getmtime(path)

返回上次修改路径的时间.返回值是一个数字,给出了自纪元以来的秒数(参见时间模块).如果文件不存在或无法访问,则引发os.error.

os.path.getctime(path)

返回系统的ctime,在某些系统(如Unix)上是最后一次更改的时间,而在其他系统(如Windows)上,是路径的创建时间.返回值是一个数字,给出了自纪元以来的秒数(参见时间模块).如果文件不存在或无法访问,则引发os.error.

这基本上意味着它们在unix/systems中使用时是相同的吗?

#!/usr/bin/python
import os
print os.path.getmtime('File')
print os.path.getctime('FIle')
Run Code Online (Sandbox Code Playgroud)

两个打印都获取相同的值.

我基本上是在寻找文件的最后创建日期,而不是最后修改日期.有没有办法在unix中实现相同的目标?

eaj*_*eaj 20

mtime指的是上次更改文件内容的时间.这可以通过各种方式在unix系统上进行更改.通常,从备份还原文件时,会更改mtime以指示在进行备份之前上次更改内容的时间.

ctime表示最后一次改变inode.这不能改变.在上面的备份示例中,ctime仍将反映文件恢复的时间.此外,更改文件权限等内容时会更新ctime.

不幸的是,通常无法找到文件创建的原始日期.这是底层文件系统的限制.我相信ext4文件系统已经为inode添加了创建日期,Apple的HFS也支持它,但我不确定你如何在Python中检索它.(C stat函数和相应的stat命令应该显示有关支持它的文件系统的信息.)


And*_*ark 5

从该名男子页上的统计,这os.path.getmtime()os.path.getctime()在Unix系统都使用:

该字段 st_mtime 是由文件修改改变,例如,通过mknod(2)truncate(2)utime(2)write(2)(大于零个字节)。此外,st_mtime通过在该目录中创建或删除文件来更改目录。st_mtime所有者,组,硬链接数或模式的更改不会更改该字段。
...

st_ctime通过写入或设置索引节点信息(即所有者,组,链接数,模式等)来更改该字段。

所以不,这些不一样。