mirror of
https://github.com/python/cpython.git
synced 2026-05-06 04:37:33 -04:00
[3.13] gh-132631: Fix "I/O operation on closed file" when parsing JSON Lines file (GH-132632) (#148922)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Brian Schubert <brianm.schubert@gmail.com>
This commit is contained in:
committed by
GitHub
parent
813498411a
commit
e4ae72a6d9
+2
-1
@@ -63,7 +63,8 @@ def main():
|
||||
infile = open(options.infile, encoding='utf-8')
|
||||
try:
|
||||
if options.json_lines:
|
||||
objs = (json.loads(line) for line in infile)
|
||||
lines = infile.readlines()
|
||||
objs = (json.loads(line) for line in lines)
|
||||
else:
|
||||
objs = (json.load(infile),)
|
||||
finally:
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
{"ingredients":["frog", "water", "chocolate", "glucose"]}
|
||||
{"ingredients":["chocolate","steel bolts"]}
|
||||
@@ -1,4 +1,5 @@
|
||||
import errno
|
||||
import pathlib
|
||||
import os
|
||||
import sys
|
||||
import textwrap
|
||||
@@ -6,7 +7,7 @@ import unittest
|
||||
import subprocess
|
||||
|
||||
from test import support
|
||||
from test.support import os_helper
|
||||
from test.support import force_not_colorized, os_helper
|
||||
from test.support.script_helper import assert_python_ok
|
||||
|
||||
|
||||
@@ -147,6 +148,14 @@ class TestTool(unittest.TestCase):
|
||||
self.assertEqual(process.stdout, self.jsonlines_expect)
|
||||
self.assertEqual(process.stderr, '')
|
||||
|
||||
@force_not_colorized
|
||||
def test_jsonlines_from_file(self):
|
||||
jsonl = pathlib.Path(__file__).parent / 'json_lines.jsonl'
|
||||
args = sys.executable, '-m', 'json.tool', '--json-lines', jsonl
|
||||
process = subprocess.run(args, capture_output=True, text=True, check=True)
|
||||
self.assertEqual(process.stdout, self.jsonlines_expect)
|
||||
self.assertEqual(process.stderr, '')
|
||||
|
||||
def test_help_flag(self):
|
||||
rc, out, err = assert_python_ok('-m', 'json.tool', '-h')
|
||||
self.assertEqual(rc, 0)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
Fix "I/O operation on closed file" when parsing JSON Lines file with
|
||||
:mod:`JSON CLI <json.tool>`.
|
||||
Reference in New Issue
Block a user