locale_database: Use NamedTemporaryFile for temporary files
Using NamedTemporaryFile instead mkstemp + fdopen simplifies the code. It also makes it easier to switch to using context managers for handling source file modification. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: Ibeae840ac6dde3d0b49cd7f985cfa6cd775b7f47 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
parent
2d0c2c9f1c
commit
8f06d3f938
@ -37,9 +37,8 @@ Classes:
|
|||||||
SourceFileEditor -- adds standard prelude and tail handling to Transcriber.
|
SourceFileEditor -- adds standard prelude and tail handling to Transcriber.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import tempfile
|
from tempfile import NamedTemporaryFile
|
||||||
|
|
||||||
class Error (Exception):
|
class Error (Exception):
|
||||||
def __init__(self, msg, *args):
|
def __init__(self, msg, *args):
|
||||||
@ -85,22 +84,19 @@ class Transcriber (object):
|
|||||||
def __init__(self, path: Path, temp_dir: Path):
|
def __init__(self, path: Path, temp_dir: Path):
|
||||||
# Open the old file
|
# Open the old file
|
||||||
self.reader = open(path)
|
self.reader = open(path)
|
||||||
# Create a temp file to write the new data into
|
|
||||||
temp, tempPath = tempfile.mkstemp(path.name, dir=temp_dir)
|
|
||||||
self.path = path
|
self.path = path
|
||||||
self.tempPath = Path(tempPath)
|
# Create a temp file to write the new data into
|
||||||
self.writer = os.fdopen(temp, "w")
|
self.writer = NamedTemporaryFile('w', prefix=path.name, dir=temp_dir, delete=False)
|
||||||
|
|
||||||
def close(self) -> None:
|
def close(self) -> None:
|
||||||
self.reader.close()
|
self.reader.close()
|
||||||
self.writer.close()
|
self.writer.close()
|
||||||
self.reader = self.writer = None
|
|
||||||
|
|
||||||
# Move the modified file to the original location
|
# Move the modified file to the original location
|
||||||
self.path.unlink()
|
self.path.unlink()
|
||||||
self.tempPath.rename(self.path)
|
Path(self.writer.name).rename(self.path)
|
||||||
|
|
||||||
self.tempPath = None
|
self.reader = self.writer = None
|
||||||
|
|
||||||
def cleanup(self) -> None:
|
def cleanup(self) -> None:
|
||||||
if self.reader:
|
if self.reader:
|
||||||
@ -109,12 +105,9 @@ class Transcriber (object):
|
|||||||
|
|
||||||
if self.writer:
|
if self.writer:
|
||||||
self.writer.close()
|
self.writer.close()
|
||||||
self.writer = None
|
|
||||||
|
|
||||||
if self.tempPath:
|
|
||||||
# Remove temp-file:
|
# Remove temp-file:
|
||||||
self.tempPath.unlink(missing_ok=True)
|
Path(self.writer.name).unlink(missing_ok=True)
|
||||||
self.tempPath = None
|
self.writer = None
|
||||||
|
|
||||||
|
|
||||||
class SourceFileEditor (Transcriber):
|
class SourceFileEditor (Transcriber):
|
||||||
|
Loading…
Reference in New Issue
Block a user