2011-01-20 27 views
5

Tôi tương đối mới với thế giới mac. Câu hỏi của tôi liên quan đến việc mở một ứng dụng bằng cách sử dụng python trên mac osx. Từ những gì tôi đã tìm thấy cho đến nay, có vẻ như là nếu các ứng dụng được lưu trữ trong định dạng ứng dụng thực sự là thư mục. Các hệ điều hành này có phân tích cú pháp bằng cách nào đó khi mở ứng dụng không? Tôi muốn mở Safari bằng cách sử dụng python và nó nằm trong thư mục /Applications/Safari.app của tôi. Có một nhị phân cụ thể tôi nên được đi qua os.system hoặc tôi nên đi về nó theo một cách hoàn toàn khác nhau? Mục tiêu cuối cùng của tôi là có safari mở một tệp html cục bộ, đóng nó rồi mở một tệp html cục bộ khác.Mở và sử dụng Safari

Cảm ơn, -John

Trả lời

14

Các Python thư viện tiêu chuẩn bao gồm các module webbrowser cho phép bạn mở một cửa sổ trình duyệt mới hoặc tab một cách nền tảng độc lập . Nó hỗ trợ Safari trên OS X nếu nó là mặc định của người dùng:

>>> import webbrowser 
>>> webbrowser.open("http://stackoverflow.com") 

Nhưng webbrowser không hỗ trợ đóng cửa sổ trình duyệt. Đối với cấp độ kiểm soát đó, bạn nên sử dụng giao diện kịch bản Sự kiện Apple của Safari bằng cách cài đặt py-appscript.

>>> from appscript import * 
>>> safari = app("Safari") 
>>> safari.make(new=k.document,with_properties={k.URL:"http://stackoverflow.com"}) 
>>> safari.windows.first.current_tab.close() 

Nếu bạn chỉ muốn thay đổi trang web được hiển thị trong tab bạn đã mở:

>>> safari.windows.first.current_tab.URL.set("http://www.google.com") 
>>> safari.windows.first.current_tab.URL.set("http://www.python.com") 

của Apple kiện giao diện của Safari có phần phi trực quan (không may, đó không phải là bất thường với các ứng dụng Mac). Có những tài liệu tham khảo ngoài kia nếu bạn cần làm những thứ phức tạp hơn. Nhưng Python và py-appscript cung cấp cho bạn một nền tảng vững chắc để làm việc.

+0

Cảm ơn bạn rất nhiều vì câu trả lời và mã mẫu! – user583599

+0

Cảm ơn câu trả lời phù hợp với mọi trình duyệt và hệ điều hành. Tôi đã cuộn xuống câu trả lời, tôi nghĩ rằng câu trả lời sẽ chỉ được sử dụng os.system hoặc subprocess.Popen. Thay vào đó, bạn đã cho chúng tôi một câu trả lời khéo léo. –

+0

Bất kỳ ý tưởng nào tại sao điều này có thể mở Firefox theo mặc định, mặc dù Safari là trình duyệt mặc định của hệ thống? Tôi không thể sử dụng trình duyệt 'type'' 'macosx'', nhưng ít nhất 'webbrowser.get (' safari ')' hoạt động như được thảo luận trong tài liệu. – Chris

0

này làm việc cho tôi:

os.system("open /Applications/Safari.app http://www.google.com") 
+0

Cảm ơn bạn đã làm việc. Có cách nào để tương tác với safari về đóng các tab riêng lẻ hoặc trang web mà nó đã mở không? – user583599

+0

@ user583599 Tương tác với Safari được thực hiện tốt nhất với Apple Xem câu trả lời của @ Ned – chrisaycock

+0

Từ việc nhìn vào câu trả lời của Ned và từ một số tìm kiếm, tôi đã tìm ra http://wiki.python.org/moin/MacPython/AppscriptModule cho bất cứ ai quan tâm đến chúng tôi – user583599

0

os.system ("open -a /Applications/Safari.app http://www.google.com") để làm việc này khi safari không phải là add -a mặc định sau khi mở. Nhận xét chưa được nêu (danh tiếng dưới 50 (:)

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