5

每当我open()使用 的文件时Python,最后一次访问时间都不会更新,这很奇怪:

如果我打开r/rb文件时没有任何变化

如果我打开w/r+或打开 ctime 和 mtime 正确更新但没有atime

它看起来不像是文件系统问题(在这种情况下是 ext3),因为如果我触摸或 cat 文件,它会正确更新。

我还没有找到很多关于它的信息;它应该以这种方式表现还是有什么问题?

4

1 回答 1

1

请尝试运行mount,看看是否noatime在挂载的 fs 上使用了 flag。此外,如果您的内核足够新鲜,则默认设置为“relatime”。

“open()”代码是不言自明的,不会与 ATIME 标志混淆:

/* >> fileutils.c from Python 3.2.3 */

FILE*
_Py_fopen(PyObject *path, const char *mode)
{
#ifdef MS_WINDOWS
    wchar_t wmode[10];
    int usize;

    usize = MultiByteToWideChar(CP_ACP, 0, mode, -1, wmode, sizeof(wmode));
    if (usize == 0)
        return NULL;

    return _wfopen(PyUnicode_AS_UNICODE(path), wmode);
#else
    FILE *f;
    PyObject *bytes = PyUnicode_EncodeFSDefault(path);
    if (bytes == NULL)
        return NULL;

    /* >> Plain fopen(), nothing fancy here. */
    f = fopen(PyBytes_AS_STRING(bytes), mode);
    Py_DECREF(bytes);
    return f;
#endif
}
于 2012-05-31T07:46:12.353 回答