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.

NamedTemporaryFile(mode, suffix='')
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="")
temp_dir
name
def close(self):
26    def close(self):
27        return self.file.close()