2011-05-30 18 views
13

Me gustaría dar a los usuarios de mi programa simple la oportunidad de abrir un archivo de ayuda para instruirlos sobre cómo utilizar mi programa al máximo. Idealmente, me gustaría tener un pequeño enlace de ayuda azul en mi GUI en el que se pueda hacer clic en cualquier momento, lo que da como resultado que se abra un archivo .txt en un editor de texto nativo, por ejemplo, un bloc de notas.¿Abrir un archivo de texto usando el bloc de notas como archivo de ayuda en Python?

¿Hay una manera simple de hacer esto?

¡Gracias!

+1

¿Cuál es el framework Gui que estás usando (PyGtk, Tkinter, ...)? – ThomasH

+2

@ThomasH: De las otras preguntas de OP, parece que está usando el marco de aplicación de PyQt. – martineau

Respuesta

30
import webbrowser 
webbrowser.open("file.txt") 

A pesar de su nombre, se abrirá en el Bloc de notas, gedit y así sucesivamente. Nunca lo intenté, pero se dice que funciona.

Una alternativa es utilizar

osCommandString = "notepad.exe file.txt" 
os.system(osCommandString) 

o como subproceso:

import subprocess as sp 
programName = "notepad.exe" 
fileName = "file.txt" 
sp.Popen([programName, fileName]) 

pero tanto estos últimos casos que se necesitan para encontrar el editor de texto nativo para el sistema operativo dado en primer lugar.

+0

¡Tuve que probar el 'webbrowser'! ¡Funciona a las mil maravillas! – Trufa

+0

bueno para escuchar, puede marcar esta respuesta como respuesta luego – SinistraD

+1

+1 para la creatividad de pensar en 'navegador'. También sugeriría que mire [esta pregunta en SO] (http://stackoverflow.com/questions/434597/open-document-with-default-application-in-python) – inspectorG4dget

3

Si desea abrir el archivo de ayuda con la aplicación asociada actualmente con archivos de texto, que podría no ser el Bloc de notas, puede hacerlo de esta manera en Windows:

import subprocess 
subprocess.call(['cmd.exe', '/c', 'file.txt']) 
1

Usted puede hacer esto en una línea:

import subprocess 
subprocess.call(['notepad.exe', 'file.txt']) 

Puede cambiar el nombre de notepad.exe al editor de su elección.

8
os.startfile('file.txt') 

De the python docs:

este actúa como un doble clic en el archivo en el Explorador de Windows, o dar el nombre del archivo como argumento para la inicio comando desde la consola de comandos interactivo: el archivo es abierto con cualquier aplicación (si hay) a la que está asociada su extensión.

De esta forma si su usuario cambia su editor de texto predeterminado a, por ejemplo, notepad ++, usaría su preferencia en lugar de notepad.

+0

Este es un buen enfoque, pero solo está disponible en Windows. En un entorno Unix, probablemente sea mejor que use os.system ('$ EDITOR ') – dusktreader

Cuestiones relacionadas