如何进行虚拟文件处理?

2024-06-07 16:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,对于创建文件,我使用以下命令:

fileHandle = open('fileName', 'w')

然后将内容写入文件,关闭文件。 在下一步中,我将处理该文件。 在程序的最后,我得到了一个需要删除的“物理文件”。

有没有一种方法可以编写一个“虚拟”文件,该文件的行为与“物理”文件完全相同(允许以相同的方式对其进行操作),但在Python中运行结束时不存在?


Tags: 文件方法命令程序内容方式物理open
3条回答

您可能需要考虑使用^{},这将为您提供最好的两个世界,因为它最初将创建一个基于内存的临时虚拟文件,但如果内存中保存的数据超过指定的大小,它将自动切换到基于物理磁盘的文件。

另一个不错的特性是(使用内存时),它将自动使用^{}^{},这取决于使用的mode是什么,允许您读写Unicode字符串或二进制数据(字节)。

唯一棘手的部分可能是您需要避免在两个步骤之间关闭文件,因为这样做会导致文件从内存或磁盘中删除。相反,您可以使用一个文件^{}方法调用将其回放到开头。

当您完全处理完该文件并将其关闭时,如果其中的数据量导致该文件回滚到物理文件,则会自动将其从磁盘中删除。

io模块中有StringIOBytesIO

StringIO的行为类似于以文本模式打开的文件-读取和写入unicode字符串(相当于使用io.open(filename, mode, encoding='...')打开文件),而BytesIO的行为类似于以二进制模式打开的文件(mode='[rw]b'),并且可以读取和写入字节。

Python2:

In [4]: f = io.BytesIO('test')
In [5]: type(f.read())
Out[5]: str
In [6]: f = io.StringIO(u'test')
In [7]: type(f.read())
Out[7]: unicode

Python3:

In [2]: f = io.BytesIO(b'test')
In [3]: type(f.read())
Out[3]: builtins.bytes
In [4]: f = io.StringIO('test')
In [5]: type(f.read())
Out[5]: builtins.str

你可以用StringIO作为虚拟文件, 来自官方documentation

import StringIO

output = StringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'

# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()

# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()

相关问题 更多 >

    热门问题