python – 在追加模式下我的文件是否在RAM中打开?

我写了一个代码,继续附加文件.这是它的代码:

writel = open('able.csv','a',encoding='utf-8',errors='ignore')
with open('test','r',errors='ignore') as file:
    for i in file.readlines():
        data = functionforprocess(i)
        if data is not "":
            writel.write(data)
        if count% 10000 == 0:
            log = open('log','w')
            log.write(str(count))
            log.close()

我的问题是:我在追加模式下打开的文件是否在RAM中可用?该文件是否像缓冲区一样,意味着如果我将数据存储在变量中然后将变量写入文件等于以追加模式打开文件并直接写入?

请注意,让我摆脱这种困惑.

最佳答案
附加是文件I / O的基本功能,由操作系统执行.例如,使用模式a或a进行fopen是POSIX标准的一部分.对于文件I / O,操作系统也会倾向于缓冲读写操作;例如,对于大多数用途,没有必要确保您传递的数据实际上始终在磁盘上.有时它位于操作系统某处的缓冲区中;有时,操作系统会将这些缓冲区转储到磁盘上.如果对你很重要,你可以使用fsync强制写入;这也是一个非常好的理由,以确保在完成它们时(或使用上下文管理器)总是在打开的文件对象上调用close;如果你忘记了,你可能会因为操作系统中的那些缓冲区而产生奇怪的行为.

所以,回答你的问题.您打开的文件很可能在任何给定时刻都在RAM中.但是,据我所知,你无法使用它.您可以使用文件I / O方法与文件中的数据进行交互,但它不像是一个缓冲区,您可以获取内存地址,并回读您刚才写的内容.至于附加模式写入是否等同于将某些内容存储在缓冲区然后写入磁盘,我想我会说不.操作系统可能会以相同的方式缓冲任何类型的文件I / O写入,并且这是有效的原因是操作系统可以决定何时刷新缓冲区.如果将事物存储在变量中,然后以原子方式将其写入磁盘,则可以决定何时进行写入.

相关文章

使用OpenCV实现视频去抖 整体步骤: 设置输入输出视频 寻找帧...
前言 对中文标题使用余弦相似度算法和编辑距离相似度分析进行...
前言 之前尝试写过一个爬虫,那时对网页请求还不够熟练,用的...
前言 本文使用Python实现了PCA算法,并使用ORL人脸数据集进行...
前言 使用opencv对图像进行操作,要求:(1)定位银行票据的...
天气预报API 功能 从中国天气网抓取数据返回1-7天的天气数据...