2009-08-29 34 views
6

tôi có một chương trình python mở ra nhiều url trong các tab riêng biệt trong một cửa sổ trình duyệt mới, tuy nhiên khi tôi chạy chương trình từ dòng lệnh và mở trình duyệt sử dụngđàn áp/chuyển hướng stderr khi gọi python webrowser

webbrowser.open_new(url) 

Các stderr từ firefox in để bash. Nhìn vào các tài liệu tôi dường như không thể tìm thấy một cách để chuyển hướng hoặc ngăn chặn chúng

Tôi đã phải dùng đến sử dụng

browserInstance = subprocess.Popen(['firefox'], stdout=log, stderr=log) 

đâu log là một tempfile & sau đó mở các tab khác với webbrowser.open_new.

Có cách nào để thực hiện việc này trong mô-đun trình duyệt web không?

Trả lời

5

Webbrowser.get() cung cấp cho bạn điều gì?

Nếu bạn làm

webbrowser.get('firefox').open(url) 

sau đó bạn sẽ không thấy bất kỳ đầu ra. Mô-đun webbrowser choses để để lại stderr cho một số trình duyệt - đặc biệt là các trình duyệt văn bản, và sau đó những người mà nó không phải là nhất định. Đối với tất cả UnixBrowsers đã thiết lập nền thành True, không có đầu ra nào được hiển thị.

0

Điều gì về việc gửi đầu ra đến /dev/null thay vì tệp tạm thời?

0

Tôi nghĩ Martin là đúng về các hệ thống Unix, nhưng có vẻ như mọi thứ khác nhau trên Windows. Đây có phải là trên hệ thống Windows không?

Trên Windows nó trông giống như webbrowser.py hoặc là sẽ cung cấp cho bạn một trình duyệt webbrowser.WindowsDefault, mà mở url sử dụng

os.startfile(url) 

hoặc nếu Firefox là trình bày nó sẽ cung cấp cho bạn một webbrowser.BackgroundBrowser , bắt đầu trình duyệt trên Windows sử dụng:

p = subprocess.Popen(cmdline) 

Dường như chỉ trình duyệt Unix có khả năng chuyển hướng stderr trong module webbrowser. Bạn sẽ có thể tìm hiểu loại trình duyệt bạn đang nhận bằng cách thực hiện

>>> webbrowser.get('firefox') 

Trong bảng điều khiển tương tác Python.

Các vấn đề liên quan