diff --git a/Lib/mimetypes.py b/Lib/mimetypes.py index 33e86d51a0fe50..ffaf1b1006cb3b 100644 --- a/Lib/mimetypes.py +++ b/Lib/mimetypes.py @@ -722,18 +722,23 @@ def _main(args=None): args, help_text = _parse_args(args) + results = [] if args.extension: for gtype in args.type: guess = guess_extension(gtype, not args.lenient) if guess: - return str(guess) - sys.exit(f"error: unknown type {gtype}") + results.append(str(guess)) + else: + sys.exit(f"error: unknown type {gtype}") + return '\n'.join(results) else: for gtype in args.type: guess, encoding = guess_type(gtype, not args.lenient) if guess: - return f"type: {guess} encoding: {encoding}" - sys.exit(f"error: media type unknown for {gtype}") + results.append(f"type: {guess} encoding: {encoding}") + else: + sys.exit(f"error: media type unknown for {gtype}") + return '\n'.join(results) return help_text diff --git a/Lib/test/test_mimetypes.py b/Lib/test/test_mimetypes.py index fb57d5e5544c12..49a935b1f27e59 100644 --- a/Lib/test/test_mimetypes.py +++ b/Lib/test/test_mimetypes.py @@ -470,6 +470,14 @@ def test_parse_args(self): self.assertFalse(args.lenient) self.assertEqual(args.type, ["foo.pic"]) + def test_multiple_inputs(self): + result = mimetypes._main(shlex.split("foo.pdf foo.png")) + self.assertEqual( + result, + "type: application/pdf encoding: None\n" + "type: image/png encoding: None" + ) + def test_invocation(self): for command, expected in [ ("-l -e image/jpg", ".jpg"), diff --git a/Misc/NEWS.d/next/Library/2025-07-10-21-02-43.gh-issue-136507.pnEuGS.rst b/Misc/NEWS.d/next/Library/2025-07-10-21-02-43.gh-issue-136507.pnEuGS.rst new file mode 100644 index 00000000000000..b72fd26b38a83b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-10-21-02-43.gh-issue-136507.pnEuGS.rst @@ -0,0 +1 @@ +Fix mimetypes CLI to handle multiple file parameters.