Asocie la extensión de archivo a la secuencia de comandos de Python para que pueda abrir el archivo haciendo doble clic en Windows

Quiero hacer lo siguiente:

  1. Guarde los datos numéricos en un formato similar a CSV, con una extensión “.foo”;
  2. Asocie la extensión de archivo “.foo” con algún script de Python, que a su vez abre el archivo .foo, lee su contenido y traza algo con una biblioteca de ploteo (lo más probable es que sea matplotlib).

El caso de uso sería: haga doble clic en el archivo y su ttwig respectiva aparecerá de inmediato.

Me pregunto cómo debería escribir un script en python para hacer eso. Además, el cuadro de diálogo “abrir con” de Windows solo me permite elegir ejecutables (* .exe). Si elijo “fooOpener.py”, no funciona.

Esta no es realmente una pregunta de progtwigción, pero lo que debe hacer es averiguar cómo obtener el ejecutable de Python en la clave de registro que abre su archivo de datos.

Por ejemplo, creé una pequeña secuencia de comandos de Python llamada opener.py que se parece a esto:

 import sys print(sys.argv) input() 

Luego creé un testfile.foo y usé el botón “cambiar” en el cuadro de diálogo de propiedades de ese archivo para elegir opener.py . (Puede hacer esto si hace clic en Examinar y cambia el filtro de archivos del cuadro de diálogo Abrir con a “Todos los archivos”.)

Por supuesto esto no funcionó (como notaste). Así que abrí regedit y busqué opener.py y lo encontré en la siguiente clave de registro:

 HKEY_CURRENT_USER\Software\Classes\Applications\opener.py\shell\open\command 

El valor predeterminado de esta clave fue "C:\opener.py" %1 . Lo cambié a python "C:\opener.py" %1 . ¡Funcionó!

En pocas palabras, para hacer esto correctamente, necesita editar el registro de forma personalizada. En realidad, configurar la asociación de archivos es más complejo que solo editar esa tecla (también debe indicar que .foo está asociado con opener.py ).

Un enfoque alternativo sería convertir su script de Python en un ejecutable independiente utilizando una de las varias herramientas disponibles para ese propósito, o escribir un pequeño ejecutable en C que inicie el script.