Chrome 使用 Webbrowser 模块时出现路径文件问题(非个人问题)
Chrome Path File Issue (Not Personal Issue) while using the Webbrowser Module
所以我最近写了一个小代码来使用 webbrowser 模块输入特定的URL。它适用于我的电脑。但是当我 运行 在我朋友的 PC 上使用相同的代码时,webbrowser 模块无法打开 Chrome。这是我的代码:
import webbrowser
url = 'https://pythonexamples.org'
webbrowser.register('chrome',None,webbrowser.BackgroundBrowser("C://Program Files(x86)//Google//Chrome//Application//chrome.exe"))
webbrowser.get('chrome').open(url)
因此,在进行一些研究后,我们发现 问题出在 Program Files(x86) 上。 Chrome 在我的电脑上打开的原因是因为 Google 文件夹存储在 Program Files(x86) 和我朋友电脑上的 Program Files. 所以我的目的是为此创建一个解决方案,以便我的函数可以在任何 pc 上运行,而不必担心这个路径问题。
在谷歌搜索中我们发现了这个信息:
即将开始,如果是 64 位安装程序,Google Chrome 将默认安装在 Windows 的 C:\Program Files\ 文件夹中. Chrome 安装在 C:\Program Files (x86)\ 文件夹中的 64 位版本将继续工作,并将像以前一样更新。
那么我们如何创建一个代码,首先我们可以确定Google文件夹是在Program Files还是Program Files(x86)中,然后在[=35中注册路径文件=]参数。任何帮助,将不胜感激。
提前致谢:)
更新:我的新代码基于 Markus Rosjat 的解决方案
def get_executable(search_path, executeable_name):
for sdir, dir, files in os.walk(search_path):
if executeable_name in files:
exe = files[files.index(executeable_name)]
return os.path.join(sdir, exe)
for path in [ 'C:\program files',"C:\program files(x86)"]:
exe = get_executable(path, 'chrome.exe')
if exe:
url = f'https://{website}.com'
webbrowser.register('chr', None, webbrowser.BackgroundBrowser(exe))
webbrowser.get('chr').open(url)
代码没有返回任何东西。
以上评论中的简短示例
import webbrowser
url = 'https://www.google.com/'
webbrowser.open(url)
应该尝试打开系统上的默认浏览器。如果您想使用寄存器,请尝试 windows-default
选项
一个好的起点应该是https://docs.python.org/3/library/webbrowser.html
更新
你可以得到一个你想要的浏览器的控制器,但是 bowser 需要在系统上安装。
import webbrowser
url = 'https://www.google.com/'
controller = webbrowser.get('chrome')
controller.open(url)
如果您查看文档,您可以遍历 get 方法的所有可能预设并使用您获得的第一个控制器,但这可能有点太多了。如果你确定有 chrome 那么上面的行应该足够了。
更新了一个简单的函数来查找可执行文件的路径,它应该可以用于此用途。
import os
def get_executable(search_path, executeable_name):
for sdir,dir,files in os.walk(search_path):
if executeable_name in files:
exe = files[files.index(executeable_name)]
return os.path.join(sdir,exe)
exe = get_executable('C:\program files', 'chrome.exe')
更新路径列表的简单迭代
这是一个简单粗暴的例子
for path in ['C:\program files(x86)', 'C:\program files']:
exe = get_executable(path, 'opera.exe')
if exe:
break
您可以在列表中放置任意多的路径来搜索您的 exe 文件
更新更明确的失败
同样,这只是一个例子,它并不是很有用,但它给出了如何处理事情的想法。我的目的不是解决问题,而是给你进一步调查的方向;)
import os
import webbrowser
class BrowserNotFoundException(Exception):
pass
def get_executable(search_path, executable_name):
for sdir, dir, files in os.walk(search_path):
if executable_name in files:
exe = files[files.index(executable_name)]
return os.path.join(sdir,exe)
def search_paths(paths, executable_name):
for path in paths:
exe = get_executable(path, executable_name)
if exe:
return exe
raise BrowserNotFoundException(f'{executable_name} is not in the path searched({paths})')
paths = ['c:\program files(x86)', 'c:\program files']
executable = 'chrome.exe'
url = 'https://google.com'
exe = search_paths(paths,executable)
webbrowser.register('myBrowser', None, webbrowser.BackgroundBrowser(exe))
webbrowser.get('myBrowser').open(url)
干杯
马库斯
所以我最近写了一个小代码来使用 webbrowser 模块输入特定的URL。它适用于我的电脑。但是当我 运行 在我朋友的 PC 上使用相同的代码时,webbrowser 模块无法打开 Chrome。这是我的代码:
import webbrowser
url = 'https://pythonexamples.org'
webbrowser.register('chrome',None,webbrowser.BackgroundBrowser("C://Program Files(x86)//Google//Chrome//Application//chrome.exe"))
webbrowser.get('chrome').open(url)
因此,在进行一些研究后,我们发现 问题出在 Program Files(x86) 上。 Chrome 在我的电脑上打开的原因是因为 Google 文件夹存储在 Program Files(x86) 和我朋友电脑上的 Program Files. 所以我的目的是为此创建一个解决方案,以便我的函数可以在任何 pc 上运行,而不必担心这个路径问题。
在谷歌搜索中我们发现了这个信息:
即将开始,如果是 64 位安装程序,Google Chrome 将默认安装在 Windows 的 C:\Program Files\ 文件夹中. Chrome 安装在 C:\Program Files (x86)\ 文件夹中的 64 位版本将继续工作,并将像以前一样更新。
那么我们如何创建一个代码,首先我们可以确定Google文件夹是在Program Files还是Program Files(x86)中,然后在[=35中注册路径文件=]参数。任何帮助,将不胜感激。 提前致谢:)
更新:我的新代码基于 Markus Rosjat 的解决方案
def get_executable(search_path, executeable_name):
for sdir, dir, files in os.walk(search_path):
if executeable_name in files:
exe = files[files.index(executeable_name)]
return os.path.join(sdir, exe)
for path in [ 'C:\program files',"C:\program files(x86)"]:
exe = get_executable(path, 'chrome.exe')
if exe:
url = f'https://{website}.com'
webbrowser.register('chr', None, webbrowser.BackgroundBrowser(exe))
webbrowser.get('chr').open(url)
代码没有返回任何东西。
以上评论中的简短示例
import webbrowser
url = 'https://www.google.com/'
webbrowser.open(url)
应该尝试打开系统上的默认浏览器。如果您想使用寄存器,请尝试 windows-default
选项
一个好的起点应该是https://docs.python.org/3/library/webbrowser.html
更新
你可以得到一个你想要的浏览器的控制器,但是 bowser 需要在系统上安装。
import webbrowser
url = 'https://www.google.com/'
controller = webbrowser.get('chrome')
controller.open(url)
如果您查看文档,您可以遍历 get 方法的所有可能预设并使用您获得的第一个控制器,但这可能有点太多了。如果你确定有 chrome 那么上面的行应该足够了。
更新了一个简单的函数来查找可执行文件的路径,它应该可以用于此用途。
import os
def get_executable(search_path, executeable_name):
for sdir,dir,files in os.walk(search_path):
if executeable_name in files:
exe = files[files.index(executeable_name)]
return os.path.join(sdir,exe)
exe = get_executable('C:\program files', 'chrome.exe')
更新路径列表的简单迭代
这是一个简单粗暴的例子
for path in ['C:\program files(x86)', 'C:\program files']:
exe = get_executable(path, 'opera.exe')
if exe:
break
您可以在列表中放置任意多的路径来搜索您的 exe 文件
更新更明确的失败
同样,这只是一个例子,它并不是很有用,但它给出了如何处理事情的想法。我的目的不是解决问题,而是给你进一步调查的方向;)
import os
import webbrowser
class BrowserNotFoundException(Exception):
pass
def get_executable(search_path, executable_name):
for sdir, dir, files in os.walk(search_path):
if executable_name in files:
exe = files[files.index(executable_name)]
return os.path.join(sdir,exe)
def search_paths(paths, executable_name):
for path in paths:
exe = get_executable(path, executable_name)
if exe:
return exe
raise BrowserNotFoundException(f'{executable_name} is not in the path searched({paths})')
paths = ['c:\program files(x86)', 'c:\program files']
executable = 'chrome.exe'
url = 'https://google.com'
exe = search_paths(paths,executable)
webbrowser.register('myBrowser', None, webbrowser.BackgroundBrowser(exe))
webbrowser.get('myBrowser').open(url)
干杯
马库斯