Python打开(文件,vr)应该更新atime吗?

时间:2012-05-31 06:37:20

标签: python linux file-io filesystems

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

如果我使用r/rb打开,如果我对文件进行统计

,则无需更改

如果我使用w/r+或ctime和mtime更新正常而不是atime

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

我无法找到很多有关它的信息;是应该这样做还是有问题?

1 个答案:

答案 0 :(得分:1)

请尝试运行mount,并查看是否在已装入的fs上使用noatime标志。此外,如果你的内核足够新鲜,那么它是默认设置的“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
}