我有一个用于我的研究的软件包,它有一个类,其方法可以写入一些信息,但只将信息写入文件(即,该方法将文件对象作为参数,并作为其参数)唯一的论点)。但是,我需要在代码中使用特定信息,而不是在文件中。
我目前的解决方案是让方法将信息写入文件,然后打开该文件并使用基本的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
答案 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