我需要在遍历文件系统树的 Python 2 程序中为每个文件获取完整的纳秒精度修改时间戳。我想在 Python 本身中执行此操作,因为为每个文件生成一个新的子进程会很慢。
在 Linux 上的 C 库中,您可以通过查看结果字段来获得纳秒级精度的时间戳。例如:st_mtime_nsec
stat
#include <sys/stat.h>
#include <stdio.h>
int main() {
struct stat stat_result;
if(!lstat("/", &stat_result)) {
printf("mtime = %lu.%lu\n", stat_result.st_mtim.tv_sec, stat_result.st_mtim.tv_nsec);
} else {
printf("error\n");
return 1;
}
}
打印mtime = 1380667414.213703287
(/
位于支持纳秒时间戳的 ext4 文件系统上,时钟为 UTC)。
同样,date --rfc-3339=ns --reference=/
打印2013-10-01 22:43:34.213703287+00:00
.
Python (2.7.3) 的os.path.getmtime(filename)
并将os.lstat(filename).st_mtime
mtime 作为float
. 但是,结果是错误的:
In [1]: import os
In [2]: os.path.getmtime('/') % 1
Out[2]: 0.21370339393615723
In [3]: os.lstat('/').st_mtime % 1
Out[3]: 0.21370339393615723
——只有前 6 位数字是正确的,可能是由于浮点错误。