2011-12-15 3 views
0

Я пытаюсь создать плагин для программы Sublimetext2.Заменить строку в Python и открыть браузер с результатом

В нем используются плагины, закодированные с помощью 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

Я тогда нужно отправить это в браузере.

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

+0

'os.path' - ваш друг: http://docs.python.org/library/os.path.html' os.path.join' (вместо конкатенирования путей вручную) и 'os.getcwd' (текущий рабочий каталог) в частности. –

ответ

0

Хорошо после многих часов (я ненавижу 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-файле или любом файле, который вы не установили, чтобы открывать его в веб-браузере, вместо того, чтобы открывать файл в веб-браузере, он выдает всплывающее окно с запросом установить программу по умолчанию, чтобы открыть файл, очень раздражает!

1

Использование

os.system("path_to_browser url") 

Чтобы запустить любую внешнюю программу. Я также рекомендую посмотреть на this comment

+0

'' a "" b "' возвращает '' ab "'. Добавьте пробел. – eumiro

Смежные вопросы