python - Python open(file,vr) 应该及时更新吗?

标签 python linux file-io filesystems

每当我用 Pythonopen() 一个文件时,上次访问时间没有更新,这很奇怪:

如果我用 r/rb 打开,如果我对文件进行 stat 则没有任何变化

如果我用 w/r+ 打开或者 ctime 和 mtime 正确更新但不是 atime

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

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

最佳答案

请尝试运行mount,看看是否在挂载的文件系统上使用了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
}

关于python - Python open(file,vr) 应该及时更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828578/

相关文章:

android - 删除或更换启动时的 kivy 启动画面

python - 基于列内部索引对 Pandas 数据框进行分组

java - 检查文件是否存在而不创建它

c++ - 从文本文件中读取顺序部分

java - 使用Java从二进制文件中读取整数值

python - 行继续字符 python 后的语法错误意外字符

Python/Mysql 俄语插入

linux - GTK# 在 Process 窗口句柄之间切换

linux - Basename 带空格的文件名,并在命令 1 中使用带空格的文件名

linux - 如何在 linux 中将两个变量值与不同的行连接起来?