sift_py.data_import.tempfile
1import gzip 2import os 3import tempfile 4from pathlib import Path 5 6 7class NamedTemporaryFile: 8 """ 9 Created a named temporary file. 10 11 Works on both Windows and Unix systems. 12 13 See https://stackoverflow.com/questions/23212435/permission-denied-to-write-to-my-temporary-file 14 for more information on Windows compatibility. 15 """ 16 17 def __init__(self, mode, suffix=""): 18 self.temp_dir = tempfile.mkdtemp() 19 self.name = Path(self.temp_dir) / f"tempfile{suffix}" 20 if suffix.endswith(".gz"): 21 self.file = gzip.open(self.name, mode, newline="") 22 else: 23 self.file = open(self.name, mode, newline="") 24 25 def close(self): 26 return self.file.close() 27 28 def __enter__(self): 29 return self.file 30 31 def __exit__(self, exc_type, exc_value, traceback): 32 if not self.file.closed: 33 self.file.close() 34 35 try: 36 os.remove(self.name) 37 os.rmdir(self.temp_dir) 38 except FileNotFoundError: 39 pass
class
NamedTemporaryFile:
8class NamedTemporaryFile: 9 """ 10 Created a named temporary file. 11 12 Works on both Windows and Unix systems. 13 14 See https://stackoverflow.com/questions/23212435/permission-denied-to-write-to-my-temporary-file 15 for more information on Windows compatibility. 16 """ 17 18 def __init__(self, mode, suffix=""): 19 self.temp_dir = tempfile.mkdtemp() 20 self.name = Path(self.temp_dir) / f"tempfile{suffix}" 21 if suffix.endswith(".gz"): 22 self.file = gzip.open(self.name, mode, newline="") 23 else: 24 self.file = open(self.name, mode, newline="") 25 26 def close(self): 27 return self.file.close() 28 29 def __enter__(self): 30 return self.file 31 32 def __exit__(self, exc_type, exc_value, traceback): 33 if not self.file.closed: 34 self.file.close() 35 36 try: 37 os.remove(self.name) 38 os.rmdir(self.temp_dir) 39 except FileNotFoundError: 40 pass
Created a named temporary file.
Works on both Windows and Unix systems.
See https://stackoverflow.com/questions/23212435/permission-denied-to-write-to-my-temporary-file for more information on Windows compatibility.