¿Cómo abrir un archivo con la aplicación estándar?

Mi aplicación imprime un PDF a un archivo temporal. ¿Cómo puedo abrir ese archivo con la aplicación predeterminada en Python?

Necesito una solucion para

  • Windows
  • Linux (Ubuntu con Xfce si no hay nada más general).

Relacionado

  • Abrir documento con aplicación predeterminada en Python

en windows funciona con os.system('start ') . En Mac (sé que no preguntaste) … es os.system('open ')

Abra el archivo utilizando una aplicación que su navegador considere adecuada:

 import webbrowser webbrowser.open_new_tab(filename) 
 if linux: os.system('xdg-open "$file"') #works for urls too else: os.system('start "$file"') #a total guess 

Se necesita una pequeña corrección para que la solución de NicDumZ funcione exactamente como se indica. El problema es con el uso del operador ‘is’. Una solución de trabajo es:

 if sys.platform == 'linux2': subprocess.call(["xdg-open", file]) else: os.startfile(file) 

Una buena discusión de este tema se encuentra en ¿Hay alguna diferencia entre `==` y `is` en Python? .

Pregunte a su Application Framework favorito sobre cómo hacer esto en Linux.

Esto funcionará en Windos y Linux siempre y cuando uses GTK:

 import gtk gtk.show_uri(gtk.gdk.screen_get_default(), URI, 0) 

donde URI es la URL local del archivo