我以python开头,创建了一个从'文件'类派生的文件对象类,以便能够处理大型数据文件。 我已经创建了特定的方法来处理这些构建如下所示的文件。 我需要在每种方法之后返回一个MyClass的新实例,以便能够继续处理它们。问题是,当我多次使用相同的方法时,与用作临时文件的文件foo.txt发生冲突,因为它仍被用作MyClass实例的支持。 有没有办法解决这个问题?或者我需要为我的所有文件创建随机名称?Python:文件对象冲突
谢谢您的回答, 乔治
Class MyClass(file):
"Similar to open(file_path,'r')"
def __init__(self,file_path):
file.__init__(self,file_path)
self.tell()
def method(self):
"""Extract informations from self to write them in a temporary file foo.txt
that will be used to return a new instance of MyClass"""
output=open('foo.txt','w')
self.seek(0)
# Extracting information from self
output.write(information)
output.close()
return MyClass('foo.txt')
我已经完成了对为例,使其更加清晰。我认为我的问题是我从我在该方法中创建的文件返回一个MyClass的新实例。如果我多次使用该方法而没有关闭从foo.txt生成的实例,则实例变为空,并返回'None',因为foo.txt被重写。对于为例:
a=MyClass('/path/to/file')
b=a.method()
c=b.method()
由于B是空
我得到你正在寻找的['tempfile'(http://docs.python.org/2/library/tempfile.html)模块创建临时文件给你的感觉。但是从你的问题来看,并不清楚'file_path'和''foo.txt''来自哪里/他们代表什么。 –
我可能是错的,但我认为临时文件不能解决我的问题。 Pyton可以从头开始创建一个文件对象(没有文件),或者使文件对象独立于支持它的文件? – GeorgeDean
为什么每次执行'method'时都需要一个新的实例?通过这种方式,您必须解决文件访问同步,关闭临时文件等一些其他问题。 –