Замените строку в Python и откройте браузер с результатом - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь создать плагин для программы Sublimetext2.

Используются плагины, написанные на Python.Я вообще не обладаю знаниями Python, но, посмотрев на существующие плагины, мои познания в PHP помогут мне в этом ...

Это начало файла Python

import sublime, sublime_plugin
import webbrowser

settings = sublime.load_settings('openonserver.sublime-settings')
settings.get('file_path_prefix')
settings.get('server_url')

class OpenonServerCommand(sublime_plugin.TextCommand):
   def run(self,edit):
      file_path = self.view.file_name()

Что мне нужно сделать, хотя взять значение настроек

file_path будет путь к файлу, на котором я запускаю это, так скажем ...

E:\Server\htdocs\mytest_project_\some\folder_\test.php

Настройки

file_path_prefix будут E:\Server\htdocs\ и

server_url будут http://localhost/

Мне нужно посмотреть, если file_path_prefix существует в file_path, если это так,

Мне нужно заменить E:\Server\htdocs\ на http://localhost/ и заменить все \ на /, а затем сохранить этот новый путь в переменной

так ... E:\Server\htdocs\mytest_project_\some\folder_\test.php станет

http://localhost/mytest_project_/some/folder_/test.php

Затем мне нужно отправить это в браузер.

Любая помощь очень ценится

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Используйте

os.system("path_to_browser url")

Для запуска любой внешней программы. Я также рекомендую взглянуть на этот комментарий

0 голосов
/ 15 декабря 2011

Хорошо, через много часов (сейчас я ненавижу Python) мое решение (я не очень впечатлен), но оно частично работает

#Context.sublime-menu
[
    { "command": "openserver", "caption": "Open on Server" }
]

#Default (Windows).sublime-keymap
[
        { "keys": ["ctrl+shift+b"], "command": "openserver" }
]

#Main.sublime-menu
[
    {
        "caption": "Tools",
        "mnemonic": "T",
        "id": "tools",
        "children":
        [
            { "command": "openserver", "caption": "Open on Server" }
        ]
    }
]

#Openserver.sublime-commands
[
    {
        "caption": "Open file on Server in Browser",
        "command": "openserver"
    }
]


#Openserver.sublime-settings
{
    "file_path_prefix": "E:/Server/htdocs",
    "url_prefix": "http://localhost"
}

Основной файл

#openserver.py  

import sublime, sublime_plugin
import os
import webbrowser
import re
import os2emxpath
import logging
import sys

class OpenserverCommand(sublime_plugin.TextCommand):
   def run(self,edit):
    file_path = self.view.file_name()

    settings = sublime.load_settings('Openserver.sublime-settings')

    file = os2emxpath.normpath(file_path)

    url = re.sub(settings.get('file_path_prefix'), settings.get('url_prefix'), file)
    #logging.warning(url)

    #webbrowser.open_new(url)
    if sys.platform=='win32':
        os.startfile(url)
    elif sys.platform=='darwin':
        subprocess.Popen(['open', url])
    else:
        try:
            subprocess.Popen(['xdg-open', url])
        except OSError:
            logging.warning(url)

Теперь, когда яскажем, что это работает, но частично это не так, он берет имя файла, заменяет мой путь и URL-адрес сервера из файла настроек, а затем запускает браузер с правильным URL-адресом

За исключением, в Sublimetext2 при запускеэто для файла .py или любого файла, который вы не можете открыть в веб-браузере, и вместо открытия файла в веб-браузере появится всплывающее окно с просьбой установить программу по умолчанию для открытияфайл, очень раздражает!

...