【问题标题】:How to create a virtual file as a memory buffer如何创建虚拟文件作为内存缓冲区
【发布时间】:2020-09-02 19:49:56
【问题描述】:

我在 python 中编写了一个加密/解密文件的工具,但我想在 nano 中打开这些文件,而无需创建纯文本文件。是否可以创建 nano 可以与之交互的虚拟文件或类似文件?这些文件可以立即保存在内存中。

【问题讨论】:

  • 我最近在 ruby​​ 中经历了类似的事情。我尝试使用未命名的管道和其他一些方法进行试验,但最终只是在 /dev/shm 内创建了一个内存文件,但这确实使它仅适用于 linux。
  • 另外,在我的用例中,加密/解密 + 编辑都在 docker 内部运行,所以我不必担心执行后未加密的东西会残留。
  • 你的提示把我带到了这里:memfd_create()。手册页说它就像一个普通文件,但匿名,只存在于内存中。

标签: python python-3.x linux file


【解决方案1】:

在 Linux 中,有一些匿名的内存文件,其行为与常规文件类似,可以使用 os.memfd_create()(Python 3.8 及更高版本)创建。

>>> fd = os.memfd_create('test_file')
>>> os.write(fd, b'This is a test file\n')
nano /proc/[pid]/fd/[fd]
It automatically disappears if closed.
>>> os.lseek(fd, 0, os.SEEK_SET)
>>> os.read(fd, 0x100)
b'This is a test file\nIt automatically disappears if closed.\n'
>>> os.close(fd)

更多信息在这里:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多