用Python写一个文件,实际上是一个变量?

时间:2017-03-02 15:34:48

标签: python file variables

我有一个用于我的研究的软件包,它有一个类,其方法可以写入一些信息,但只将信息写入文件(即,该方法将文件对象作为参数,并作为其参数)唯一的论点)。但是,我需要在代码中使用特定信息,而不是在文件中。

我目前的解决方案是让方法将信息写入文件,然后打开该文件并使用基本的I / O函数读取信息。

我想知道,是否有一种方法可以欺骗该方法,以便在文件实际写入变量或列表或其他内容时将其写入文件?换句话说,有没有办法让一个文件对象实际指向代码中的变量/ list / array /,而不是实际的文件?

电流:

with open('file.txt','w') as f:
    method.write_info(f)

with open('file.txt','r') as f:
    info = f.readlines()

我想要什么(或多或少;我只是使用与我熟悉的相同的开放文件语法):

with open(<some sort of variable>) as var_file:
    method.write_info(var_file)

#Then do whatever I want with the information
print <some sort of variable>

注意:我使用的是Python 2.7

2 个答案:

答案 0 :(得分:3)

您可以使用StringIO object作为内存缓冲区,其工作方式与文件类似。

答案 1 :(得分:1)

实际上,任何实现file使用的write_info() api部分的对象都可以工作。假设write_info()仅使用file.write(),则会执行以下操作:

class PseudoFile(object):
    def __init__(self):
        self.content = []

    def write(self, value):
        self.content.append(value)

    def __str__(self):
        return "".join(map(str, self.content))

    def __repr__(self):
        return str(self)


f = PseudoFile()
method.write_info(f)
print f