Форум сайта python.su
Идея такова: “повесить” скрипт на кнопку панели инструменов в Total Commander, что бы он исполнялся с параметром, который являет собой путь файла под курсором. Передать путь не проблема, в Тотале есть переменная %Р для этого. В Питоне используем sys.argv. Вопрос в том, как привести строку к виду, требуемому в Питоне. К тому же, скорее всего, надо перекодировать русские имена папок.
Отредактировано Lion1971 (Июль 15, 2013 13:16:28)
Офлайн
Уточню. В Тотале это выглядит так
скрипт тестовый
# -*- coding: cp866 -*- import sys, os s=sys.argv[1] print s #input()
Офлайн
Сам себе отвечаю по ходу
Пробел в имени папки воспринимается как разделитель параметров.
Изменил немного скрипт
# -*- coding: cp866 -*- import sys, os s=sys.argv s.remove(sys.argv[0]) print s input()
['d:\\\xd1\xe0\xe9\xf2\\\xc4\xe5\xed\xfc', '\xf0\xee\xe4\xe8\xed\xe8\\']
Отредактировано Lion1971 (Июль 15, 2013 15:17:06)
Офлайн
Поробуйте заменить
print s
for path in s: print path
Офлайн
Lion1971
' '.join(s)
Офлайн
скрипт - тестовый, реальная задача - сформировать строку, содержащую путь к файлу, который находится под курсором ТС. Эту строку потом можо использовать в функции обработки содержимого католога.
Офлайн
' '.join(s)
Отредактировано Lion1971 (Июль 16, 2013 16:41:38)
Офлайн
' '.join(s).decode("cp1251").encode("cp866")
Офлайн
sp3не хочет' '.join(s).decode("cp1251").encode("cp866")
Офлайн
А если в начале скрипта вставить
import locale import codecs locale.setlocale(locale.LC_ALL, '') encoding = locale.getlocale()[1] if not encoding: encoding = locale.getpreferredencoding() import sys reload(sys) sys.setdefaultencoding(encoding) sys.stdout = codecs.getwriter(encoding)(sys.stdout, errors="replace") sys.stderr = codecs.getwriter(encoding)(sys.stderr, errors="replace")
Отредактировано Shaman (Июль 18, 2013 17:26:48)
Офлайн