Skip to content

Commit 9d70831

Browse files
Okabe-Junyablurb-it[bot]barneygale
authored
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 <[email protected]>
1 parent d857d53 commit 9d70831

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed

Doc/library/pathlib.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1314,7 +1314,7 @@ call fails (for example because the path doesn't exist).
13141314
.. versionadded:: 3.5
13151315

13161316

1317-
.. method:: Path.read_text(encoding=None, errors=None)
1317+
.. method:: Path.read_text(encoding=None, errors=None, newline=None)
13181318

13191319
Return the decoded contents of the pointed-to file as a string::
13201320

@@ -1329,6 +1329,8 @@ call fails (for example because the path doesn't exist).
13291329

13301330
.. versionadded:: 3.5
13311331

1332+
.. versionchanged:: 3.13
1333+
The *newline* parameter was added.
13321334

13331335
.. method:: Path.readlink()
13341336

Lib/pathlib.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -950,12 +950,12 @@ def read_bytes(self):
950950
with self.open(mode='rb') as f:
951951
return f.read()
952952

953-
def read_text(self, encoding=None, errors=None):
953+
def read_text(self, encoding=None, errors=None, newline=None):
954954
"""
955955
Open the file in text mode, read it, and close the file.
956956
"""
957957
encoding = io.text_encoding(encoding)
958-
with self.open(mode='r', encoding=encoding, errors=errors) as f:
958+
with self.open(mode='r', encoding=encoding, errors=errors, newline=newline) as f:
959959
return f.read()
960960

961961
def write_bytes(self, data):

Lib/test/test_pathlib.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1878,6 +1878,21 @@ def test_read_write_text(self):
18781878
self.assertRaises(TypeError, (p / 'fileA').write_text, b'somebytes')
18791879
self.assertEqual((p / 'fileA').read_text(encoding='latin-1'), 'äbcdefg')
18801880

1881+
def test_read_text_with_newlines(self):
1882+
p = self.cls(BASE)
1883+
# Check that `\n` character change nothing
1884+
(p / 'fileA').write_bytes(b'abcde\r\nfghlk\n\rmnopq')
1885+
self.assertEqual((p / 'fileA').read_text(newline='\n'),
1886+
'abcde\r\nfghlk\n\rmnopq')
1887+
# Check that `\r` character replaces `\n`
1888+
(p / 'fileA').write_bytes(b'abcde\r\nfghlk\n\rmnopq')
1889+
self.assertEqual((p / 'fileA').read_text(newline='\r'),
1890+
'abcde\r\nfghlk\n\rmnopq')
1891+
# Check that `\r\n` character replaces `\n`
1892+
(p / 'fileA').write_bytes(b'abcde\r\nfghlk\n\rmnopq')
1893+
self.assertEqual((p / 'fileA').read_text(newline='\r\n'),
1894+
'abcde\r\nfghlk\n\rmnopq')
1895+
18811896
def test_write_text_with_newlines(self):
18821897
p = self.cls(BASE)
18831898
# Check that `\n` character change nothing
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Added *newline* parameter to :meth:`pathlib.Path.read_text`.
2+
Patch by Junya Okabe.

0 commit comments

Comments
 (0)