Tengo un script de Python llamado spc.py en algún lugar del disco, que es para procesar archivos de texto de alguna manera (y utiliza más bibliotecas externas). Ahora lo llamo desde la consola pasando un nombre de archivo como argumento.

Debido a que estoy ejecutando este script a menudo, durante la edición del documento en sí, me gustaría poder llamar el script directamente desde Sublime Text, pasando el archivo activo como argumento, para poder llamarlo con un solo clic sin salir de la ventana .

Pero no he encontrado una forma de llamar a un script externo de Python desde el complemento Sublime Text. ¿Me puede dar una pista? ¿Es eso posible?

2
atomic44 11 may. 2016 a las 02:43

3 respuestas

La mejor respuesta

Una forma de hacerlo es llamando a python con argumentos a través de cmd.exe utilizando el módulo de subproceso, con el envío del nombre del archivo activo como argumento para el programa python.

import sublime, sublime_plugin
import subprocess

class ExecuteExternalProgramCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        exec_file = "C:\Path\To\My\Program\spc.py"
        command  = ["cmd.exe", "/c", "python", exec_file, self.view.file_name()]
        subprocess.Popen(command)

Guárdelo en su carpeta de complementos de Sublime Text User y luego coloque el atajo de teclado en su Mapa de teclas de usuario, por ejemplo

{"keys": ["ctrl+shift+e"], "command": "execute_external_program"},
2
atomic44 15 may. 2016 a las 10:08

Puedes:

1
Community 23 may. 2017 a las 11:52

Puede usar la respuesta proporcionada aquí para obtener el nombre del archivo de la ventana sublime actual. Ahora, más allá de eso, solo necesita un método que acepte una ruta como argumento de entrada y desde allí haga lo que necesite hacer.

import sublime, sublime_plugin
import re, os, os.path

class OpenrelCommand(sublime_plugin.WindowCommand):
    def run(self):
    print self.active_view()
0
Community 23 may. 2017 a las 12:31