mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-93157: Fix fileinput didn't support errors
in inplace
mode (GH-95128)
(cherry picked from commit 5c7f3bcdaf
)
Co-authored-by: Inada Naoki <songofacandy@gmail.com>
This commit is contained in:
parent
e8edbda897
commit
22f06d6ce3
3 changed files with 18 additions and 3 deletions
|
@ -335,18 +335,21 @@ class FileInput:
|
|||
pass
|
||||
# The next few lines may raise OSError
|
||||
os.rename(self._filename, self._backupfilename)
|
||||
self._file = open(self._backupfilename, self._mode, encoding=encoding)
|
||||
self._file = open(self._backupfilename, self._mode,
|
||||
encoding=encoding, errors=self._errors)
|
||||
try:
|
||||
perm = os.fstat(self._file.fileno()).st_mode
|
||||
except OSError:
|
||||
self._output = open(self._filename, self._write_mode, encoding=encoding)
|
||||
self._output = open(self._filename, self._write_mode,
|
||||
encoding=encoding, errors=self._errors)
|
||||
else:
|
||||
mode = os.O_CREAT | os.O_WRONLY | os.O_TRUNC
|
||||
if hasattr(os, 'O_BINARY'):
|
||||
mode |= os.O_BINARY
|
||||
|
||||
fd = os.open(self._filename, mode, perm)
|
||||
self._output = os.fdopen(fd, self._write_mode, encoding=encoding)
|
||||
self._output = os.fdopen(fd, self._write_mode,
|
||||
encoding=encoding, errors=self._errors)
|
||||
try:
|
||||
os.chmod(self._filename, perm)
|
||||
except OSError:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue