2015-03-13 12 views
8

voglio fare quanto segue:Associate estensione del file di script Python, in modo che possa aprire il file con un doppio clic, in finestre

  1. Salva i dati numerici in una formattazione CSV-like, con un". pippo "estensione;
  2. Associare l'estensione di file ".foo" con qualche script python, che a sua volta apre il file .foo, ne legge il contenuto e traccia qualcosa con una libreria di stampa (molto probabilmente matplotlib).

Il caso d'uso sarebbe: fare doppio clic sul file e la relativa trama viene visualizzata immediatamente.

Mi chiedo come dovrei scrivere uno script python per farlo. Inoltre, la finestra di dialogo "apri con" mi permette solo di scegliere i file eseguibili (* .exe). Se scelgo "fooOpener.py", non funziona.

risposta

7

Questa non è davvero una domanda di programmazione, ma quello che devi fare è capire come ottenere l'eseguibile Python nella chiave di registro che apre il tuo file di dati.

Per esempio, ho creato uno script Python po chiamato opener.py che assomiglia a questo:

import sys 
print(sys.argv) 
input() 

Poi ho creato una testfile.foo e ha usato il pulsante "Modifica" nella finestra di proprietà che di file per scegliere opener.py. (Puoi farlo facendo clic su Sfoglia e cambia il filtro file della finestra di dialogo Apri con "Tutti i file".)

Ovviamente questo non ha funzionato (come hai notato). Così ho aperto regedit e cercato per opener.py e l'ho trovato al seguente chiave di registro:

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

Il valore predefinito di questa chiave è stato "C:\opener.py" %1. L'ho cambiato in python "C:\opener.py" %1. Ha funzionato!

Per farla breve, per farlo correttamente è necessario modificare il registro personalizzato. L'impostazione effettiva dell'associazione file è più complessa della semplice modifica di quella chiave (è necessario indicare anche che .foo è associato a opener.py).

Un approccio alternativo sarebbe quello di trasformare il tuo script Python in un eseguibile standalone usando uno dei vari strumenti disponibili a tale scopo, o scrivere un piccolo eseguibile in C che lanci lo script.

+6

Si sta impostando le associazioni per utente (HKCU), ma se si desidera impostarlo per tutti gli utenti in HKLM, è facile utilizzare i comandi 'assoc' e' ftype' del prompt dei comandi, ad es. 'assoc .foo = FooFile' e' ftype FooFile = "C: \ Python27 \ python.exe" "C: \ opener.py" "% 1"% * '. – eryksun

+0

Come scriverei quel programma C in modo che passi il file doppio clic come argomento per lo script python? – heltonbiker

+0

@eryksun non ha funzionato per me. – Mikhail

Problemi correlati