diff --git a/Lib/pathlib.py b/Lib/pathlib.py index d42ee4dc90..aa9a731785 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -1129,24 +1129,26 @@ def read_text(self, encoding=None, errors=None): with self.open(mode='r', encoding=encoding, errors=errors) as f: return f.read() - def write_bytes(self, data): + def write_bytes(self, data, append=False): """ Open the file in bytes mode, write to it, and close the file. """ # type-check for the buffer interface before truncating the file view = memoryview(data) - with self.open(mode='wb') as f: + mode = 'ab' if append else 'wb' + with self.open(mode=mode) as f: return f.write(view) - def write_text(self, data, encoding=None, errors=None, newline=None): + def write_text(self, data, encoding=None, errors=None, newline=None, append=False): """ Open the file in text mode, write to it, and close the file. """ if not isinstance(data, str): raise TypeError('data must be str, not %s' % data.__class__.__name__) + mode = 'at' if append else 'wt' encoding = io.text_encoding(encoding) - with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f: + with self.open(mode=mode, encoding=encoding, errors=errors, newline=newline) as f: return f.write(data) def readlink(self):