mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-29 17:28:53 +00:00
util: copy in pyutil.fileutil.ReopenableNamedTemporaryFile
This commit is contained in:
parent
6fa41e738b
commit
9c35ca76a4
@ -68,6 +68,30 @@ def remove(f, tries=4, basedelay=0.1):
|
|||||||
basedelay *= 2
|
basedelay *= 2
|
||||||
return os.remove(f) # The last try.
|
return os.remove(f) # The last try.
|
||||||
|
|
||||||
|
class ReopenableNamedTemporaryFile:
|
||||||
|
"""
|
||||||
|
This uses tempfile.mkstemp() to generate a secure temp file. It then closes
|
||||||
|
the file, leaving a zero-length file as a placeholder. You can get the
|
||||||
|
filename with ReopenableNamedTemporaryFile.name. When the
|
||||||
|
ReopenableNamedTemporaryFile instance is garbage collected or its shutdown()
|
||||||
|
method is called, it deletes the file.
|
||||||
|
"""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
fd, self.name = tempfile.mkstemp(*args, **kwargs)
|
||||||
|
os.close(fd)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<%s instance at %x %s>" % (self.__class__.__name__, id(self), self.name)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.__repr__()
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
self.shutdown()
|
||||||
|
|
||||||
|
def shutdown(self):
|
||||||
|
remove(self.name)
|
||||||
|
|
||||||
class NamedTemporaryDirectory:
|
class NamedTemporaryDirectory:
|
||||||
"""
|
"""
|
||||||
This calls tempfile.mkdtemp(), stores the name of the dir in
|
This calls tempfile.mkdtemp(), stores the name of the dir in
|
||||||
|
Loading…
Reference in New Issue
Block a user