Tôi có thể sử dụng những gì để gọi hệ điều hành để mở URL trong bất kỳ trình duyệt nào người dùng có mặc định? Không lo lắng về khả năng tương thích với nhiều hệ điều hành; nếu nó hoạt động trong linux thats đủ cho tôi!Gọi đến hệ điều hành để mở url?
Trả lời
Dưới đây là làm thế nào để mở trình duyệt mặc định của người dùng với một url đưa ra:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Đây là tài liệu hướng dẫn về chức năng này. Đó là một phần của stdlibs Python:
http://docs.python.org/library/webbrowser.html
Tôi đã thử nghiệm thành công này trên Linux, Ubuntu 10.10.
FWIW nó cũng hoạt động trên Windows. – martineau
Tôi thử nghiệm nó trên Ubuntu 12.04 và nó hoạt động tốt quá, –
Nó hoạt động trên Mac. – daviewales
Hãy xem qua số webbrowser module.
Bạn có thể sử dụng mô-đun webbrowser.
webbrowser.open(url)
Cá nhân tôi thực sự sẽ không sử dụng mô-đun webbrowser
. Đây là một mớ hỗn độn của các trình duyệt cụ thể, điều này sẽ không tìm thấy trình duyệt mặc định của người dùng nếu chúng có nhiều trình duyệt được cài đặt và sẽ không tìm thấy trình duyệt nếu nó không biết tên của nó (ví dụ như Chrome).
Tốt hơn trên Windows chỉ đơn giản là sử dụng chức năng os.startfile
, cũng hoạt động trên URL. Trên OS X, bạn có thể sử dụng lệnh hệ thống open
. Trên Linux có xdg-open
, một lệnh tiêu chuẩn freedesktop.org được hỗ trợ bởi GNOME, KDE và XFCE.
if sys.platform=='win32':
os.startfile(url)
elif sys.platform=='darwin':
subprocess.Popen(['open', url])
else:
try:
subprocess.Popen(['xdg-open', url])
except OSError:
print 'Please open a browser on: '+url
Điều này sẽ mang lại trải nghiệm người dùng tốt hơn trên nền tảng chính thống. Bạn có thể quay trở lại webbrowser
trên các nền tảng khác, có lẽ. Mặc dù rất có thể nếu bạn đang ở trên một hệ điều hành không rõ ràng/bất thường/nhúng mà không có tác phẩm nào ở trên, cơ hội là webbrowser
cũng sẽ không thành công.
Tôi vừa xem xét nguồn của webbrowser và tôi không chắc mình đồng ý với bạn. Chỉ có unix sniffing trông hơi không đáng tin cậy, và thậm chí nó sẽ hoạt động chính xác trong KDE hoặc GNOME (nó có thể sử dụng một miếng vá để sử dụng 'xdg-open', mặc dù' xdg-open' cũng sử dụng sniffing tương tự). Ví dụ, thực thi win32 sử dụng 'os.startfile()' và nó cũng có một dự phòng. –
Mô-đun trình duyệt web làm việc cho tôi khi tôi có Safari làm trình duyệt mặc định của mình và cũng có khi tôi có Chrome làm trình duyệt mặc định trên Mac. – daviewales
Lưu ý rằng trình duyệt web sử dụng 'xdg-open' ngay bây giờ. Do đó câu trả lời này đã lỗi thời trên trăn hiện đại và không có lý do gì để không sử dụng mô-đun webbrowser. – Chronial
Sau đó thế nào về trộn quy tắc ứng @kobrien và @ bobince lên:
import subprocess
import webbrowser
import sys
url = 'http://test.com'
if sys.platform == 'darwin': # in case of OS X
subprocess.Popen(['open', url])
else:
webbrowser.open_new_tab(url)
os gì Bạn đang tìm kiếm kể từ khi Windows, MacOS và Linux đều có một quy ước gọi khác nhau. – koblas