2011-01-20 12 views
5

Sono relativamente nuovo al mondo mac. La mia domanda riguarda l'apertura di un'applicazione che utilizza python su mac osx. Da quello che ho trovato finora, sembra che le applicazioni siano archiviate in formato app che sono in realtà directory. Questi sono analizzati in qualche modo dal sistema operativo quando si apre l'app? Vorrei aprire Safari usando python ed è nella mia directory /Applications/Safari.app. C'è un binario specifico che dovrei passare a os.system o dovrei farlo in un modo completamente diverso? Il mio obiettivo finale è quello di fare in modo che Safari apri un file html locale, chiuderlo e quindi aprire un altro file html locale.Apertura e utilizzo di Safari

Grazie, -John

risposta

14

La libreria standard di Python comprende il modulo webbrowser, che consente di aprire una nuova finestra o scheda del browser in modo indipendente dalla piattaforma . Esso supporta Safari su OS X se è predefinito dell'utente:

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

Ma webbrowser non supporta la chiusura di una finestra del browser. Per quel livello di controllo, è meglio utilizzare l'interfaccia di scripting Apple Event di Safari installando 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() 

Se si vuole solo cambiare la pagina web visualizzata nella scheda è stato aperto:

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

interfaccia Eventi Apple Safari è poco intuitivo (purtroppo, non è insolito con applicazioni Mac). Ci sono riferimenti là fuori se hai bisogno di fare cose più complesse. Ma Python e py-appscript ti danno una base solida su cui lavorare.

+0

Grazie mille per la risposta e il codice di esempio! – user583599

+0

Grazie per la risposta che funziona per qualsiasi browser e sistema operativo. Ho fatto scorrere le risposte verso il basso, io pensavo che le risposte avrebbero semplicemente usato os.system o subprocess.Popen. Invece, ci hai dato una risposta geniale. –

+0

Qualche idea sul perché questo possa aprire Firefox di default, anche se Safari è il browser predefinito del sistema? Non posso usare il browser 'type'' '' macosx'', ma almeno 'webbrowser.get ('safari')' funziona come discusso nella documentazione. – Chris

0

questo funziona per me:

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

Grazie. Funzionerebbe. Ci sarebbe un modo per interagire con Safari in termini di chiusura di singole schede o pagine Web? – user583599

+0

@ user583599 Interagire con Safari è meglio farlo con Apple Vedere la risposta di Ned. – chrisaycock

+0

Dal guardare la risposta di Ned e da qualche ricerca ho trovato http://wiki.python.org/moin/MacPython/AppscriptModule per chiunque fosse interessato. – user583599

0

os.system ("open -a /Applications/Safari.app http://www.google.com") affinché funzioni quando Safari non è l'add -a predefinito dopo l'apertura. Non ci sono ancora commenti (reputazione inferiore a 50 (:)

Problemi correlati