簡體   English   中英

無法在網絡瀏覽器中從python打開html文件-記事本改為打開

[英]Cannot open an html file from python in a web browser - notepad opens instead

在python中,我正在嘗試使用pygal軟件包繪制圖

import pygal  # First import pygal
bar_chart = pygal.Bar()
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])
bar_chart.render_in_browser()

不幸的是,它總是打開HTML文件,但不會在瀏覽器窗口中打開HTML頁面。 我閱讀了許多文章,並且看到人們過去也有類似的問題。 我沒有找到可行的解決方案。 我也嘗試通過webbrowser模塊打開它,但是這也可以在記事本中打開HTML文件。

url='file://C:/Users/User1/AppData/Local/Temp/tmpsblpwtpr.html'
webbrowser.open(url)

有任何想法嗎?

盡管標有html擴展名,但事實並非如此。

這是SVG XML。

這是文件的標題: <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" id="chart-c252fdc0-451c-4482-b9ae-09f5b513a2fc" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.3.1 (lxml) Ā©Kozea 2012-2016 on 2017-06-09--><!--http://pygal.org--><!--http://github.com/Kozea/pygal-->

為記事本配置了xml或svg設置。

請參閱webbrowser模塊文檔中的以下內容:

請注意,在某些平台上,嘗試使用此功能打開文件名可能會起作用並啟動操作系統的關聯程序。

與系統上的.html文件相關的程序很可能是記事本,而不是瀏覽器。

webbrowser.openPython文檔所述 ,此函數不是在瀏覽器中打開本地文件的可靠方法:

請注意,在某些平台上,嘗試使用此功能打開文件名可能會起作用並啟動操作系統的關聯程序。 但是,這既不支持也不是可移植的。

這里的問題是webbrowser.open (Python 2.7源代碼)如何決定使用哪個程序打開url /文件。 導入webbrowser時,它將存儲與瀏覽器相對應的字符串列表( _tryorder )。 列表中的第一項(和使用的第一個瀏覽器)是特定於操作系統的默認瀏覽器,其后是模塊已檢測到的其他瀏覽器。

默認瀏覽器嘗試使用通用命令來調用用戶的默認Internet瀏覽器。 根據您的操作系統(可能還有您的默認瀏覽器),在打開文件時此方法可能起作用也可能不起作用。 例如,當我在MacOs上使用Chrome作為默認瀏覽器對其進行測試時,會出現一個(尚未打開)Chrome窗口,但是該文件沒有打開(也沒有任何新選項卡)。 但是,在默認使用Firefox的Ubuntu中,該文件是在瀏覽器中打開的。

在Windows中,“默認瀏覽器”使用os.startfile()打開文件, Python文檔稱其為“類似於在Windows資源管理器中雙擊文件”。 正如pycoder的答案所提到的,您計算機上.html文件的關聯程序很可能是記事本。 在這種情況下,更改用於將.html文件打開到Web瀏覽器的默認程序應該可以解決此問題。

但是,可以在Web瀏覽器中打開文件而不必更改任何設置。 您可以嘗試通過為webbrowser._tryorder列出的其他瀏覽器之一打開它(盡管應注意,源代碼(在2.7和3.6中)似乎不支持Windows上的Chrome)。 它應該看起來像這樣(盡管使用不同的瀏覽器名稱):

>>> webbrowser._tryorder
['MacOSX', 'chrome', 'firefox', 'safari']

獲得此列表后,您可以選擇要使用的瀏覽器(在此示例中為Firefox),然后使用以下代碼(適當替換_tryorder的索引):

browser = webbrowser.get(webbrowser._tryorder[2])
browser.open(url)

當我使用MacO(Firefox和Chrome)和Ubuntu(僅Firefox)進行測試時,以上代碼成功在網絡瀏覽器中打開了本地.html文件。 我不能保證它可以在Windows或不同的瀏覽器上運行,但是似乎有可能(所有非默認的Windows瀏覽器似乎都是通過subprocess.Popen調用的,因此只要有可能,它們就應該可以運行從Windows命令行在瀏覽器中打開文件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM