From f5682690e98a943350b20438ee7b670265cf706a Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Wed, 12 Feb 2025 20:18:38 +0800 Subject: [PATCH] Fixed `webbrowser.open` with `file:` URLs may launching editor instead of browser --- Lib/webbrowser.py | 6 ++++++ .../Library/2025-02-12-20-17-44.gh-issue-128540.veBJG_.rst | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2025-02-12-20-17-44.gh-issue-128540.veBJG_.rst diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index d2efc72113a917..d6118fd8d3e176 100644 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -575,6 +575,8 @@ def register_standard_browsers(): class WindowsDefault(BaseBrowser): def open(self, url, new=0, autoraise=True): sys.audit("webbrowser.open", url) + if url.startswith("file:"): + return False try: os.startfile(url) except OSError: @@ -595,6 +597,8 @@ def __init__(self, name='default'): def open(self, url, new=0, autoraise=True): sys.audit("webbrowser.open", url) + if url.startswith("file:"): + return False url = url.replace('"', '%22') if self.name == 'default': script = f'open location "{url}"' # opens in default browser @@ -626,6 +630,8 @@ def open(self, url, new=0, autoraise=True): class IOSBrowser(BaseBrowser): def open(self, url, new=0, autoraise=True): sys.audit("webbrowser.open", url) + if url.startswith("file:"): + return False # If ctypes isn't available, we can't open a browser if objc is None: return False diff --git a/Misc/NEWS.d/next/Library/2025-02-12-20-17-44.gh-issue-128540.veBJG_.rst b/Misc/NEWS.d/next/Library/2025-02-12-20-17-44.gh-issue-128540.veBJG_.rst new file mode 100644 index 00000000000000..40e216f7a3d716 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-02-12-20-17-44.gh-issue-128540.veBJG_.rst @@ -0,0 +1,2 @@ +Fixed :func:`webbrowser.open` with ``file:`` URLs may launching editor +instead of browser