Clique duas vezes no arquivo para executar com script Python específico (Windows 10)

Sep 25 2020

No Windows 10, é possível fazer um arquivo com uma extensão específica ser executado com um determinado script Python? Por exemplo, salvei os arquivos .pickle e escrevi um script Python simples para imprimi-los. Gostaria de clicar duas vezes no arquivo .pickle e fazer com que o script Python que o imprime seja executado.

Consegui criar uma entrada no menu de contexto que fez isso com sucesso. Por exemplo, este script Python simples denominado view_pickle_file.py:

import pickle
import sys

filename = sys.argv[1]
print(filename)

var = pickle.load(open(filename, 'rb'))

print(type(var))
if type(var) == list:
  print(len(var))
  for ii, value in enumerate(var):
    print(ii, value)
elif type(var) == dict:
  print(len(var))
  for key, val in var.items():
    print(key, val, sep="\t")
elif type(var) == set:
  print(len(var))
  for ii in var:
    print(ii)
else:
  print(var)

input("Press enter")

E a chave de registro Computer\HKEY_CLASSES_ROOT\SystemFileAssociations\.pickle\shell\View\commandcom um valor de dados REG_SZ (padrão) de "C:\Program Files\Python\Python38\python.exe" "C:\Scripts\Python\view_pickle_file.py" "%1":

cria:

que imprime o arquivo de pickle perfeitamente.

Mas esta é uma entrada do menu de contexto. Quero clicar duas vezes no arquivo .pickle para que isso aconteça. Como eu faria isso? É possível? Ou a entrada do menu de contexto é o mais próximo que posso chegar?

Respostas

1 harrymc Sep 29 2020 at 16:31

Experimente esta atualização de registro:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.pickle]
@="python.pickle"

[HKEY_CLASSES_ROOT\python.pickle]
@="Pickle Document"

[HKEY_CLASSES_ROOT\python.pickle\shell]

[HKEY_CLASSES_ROOT\python.pickle\shell\open]

[HKEY_CLASSES_ROOT\python.pickle\shell\open\command]
@="\"C:\\Program Files\\Python\\Python38\\python.exe\" \"C:\\Scripts\\Python\\view_pickle_file.py\" \"%1\""