mirror of
https://github.com/python/cpython
synced 2024-10-14 05:51:26 +00:00
gh-110745: add a newline argument to pathlib.Path.read_text (#110880)
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> Co-authored-by: Barney Gale <barney.gale@gmail.com>
This commit is contained in:
parent
d857d5331a
commit
9d70831cb7
|
@ -1314,7 +1314,7 @@ call fails (for example because the path doesn't exist).
|
|||
.. versionadded:: 3.5
|
||||
|
||||
|
||||
.. method:: Path.read_text(encoding=None, errors=None)
|
||||
.. method:: Path.read_text(encoding=None, errors=None, newline=None)
|
||||
|
||||
Return the decoded contents of the pointed-to file as a string::
|
||||
|
||||
|
@ -1329,6 +1329,8 @@ call fails (for example because the path doesn't exist).
|
|||
|
||||
.. versionadded:: 3.5
|
||||
|
||||
.. versionchanged:: 3.13
|
||||
The *newline* parameter was added.
|
||||
|
||||
.. method:: Path.readlink()
|
||||
|
||||
|
|
|
@ -950,12 +950,12 @@ def read_bytes(self):
|
|||
with self.open(mode='rb') as f:
|
||||
return f.read()
|
||||
|
||||
def read_text(self, encoding=None, errors=None):
|
||||
def read_text(self, encoding=None, errors=None, newline=None):
|
||||
"""
|
||||
Open the file in text mode, read it, and close the file.
|
||||
"""
|
||||
encoding = io.text_encoding(encoding)
|
||||
with self.open(mode='r', encoding=encoding, errors=errors) as f:
|
||||
with self.open(mode='r', encoding=encoding, errors=errors, newline=newline) as f:
|
||||
return f.read()
|
||||
|
||||
def write_bytes(self, data):
|
||||
|
|
|
@ -1878,6 +1878,21 @@ def test_read_write_text(self):
|
|||
self.assertRaises(TypeError, (p / 'fileA').write_text, b'somebytes')
|
||||
self.assertEqual((p / 'fileA').read_text(encoding='latin-1'), 'äbcdefg')
|
||||
|
||||
def test_read_text_with_newlines(self):
|
||||
p = self.cls(BASE)
|
||||
# Check that `\n` character change nothing
|
||||
(p / 'fileA').write_bytes(b'abcde\r\nfghlk\n\rmnopq')
|
||||
self.assertEqual((p / 'fileA').read_text(newline='\n'),
|
||||
'abcde\r\nfghlk\n\rmnopq')
|
||||
# Check that `\r` character replaces `\n`
|
||||
(p / 'fileA').write_bytes(b'abcde\r\nfghlk\n\rmnopq')
|
||||
self.assertEqual((p / 'fileA').read_text(newline='\r'),
|
||||
'abcde\r\nfghlk\n\rmnopq')
|
||||
# Check that `\r\n` character replaces `\n`
|
||||
(p / 'fileA').write_bytes(b'abcde\r\nfghlk\n\rmnopq')
|
||||
self.assertEqual((p / 'fileA').read_text(newline='\r\n'),
|
||||
'abcde\r\nfghlk\n\rmnopq')
|
||||
|
||||
def test_write_text_with_newlines(self):
|
||||
p = self.cls(BASE)
|
||||
# Check that `\n` character change nothing
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Added *newline* parameter to :meth:`pathlib.Path.read_text`.
|
||||
Patch by Junya Okabe.
|
Loading…
Reference in a new issue