Найти - Пользователи
Полная версия: Запуск скрипта с параметрами из Total Commander
Начало » Центр помощи » Запуск скрипта с параметрами из Total Commander
1 2
Lion1971
Идея такова: “повесить” скрипт на кнопку панели инструменов в Total Commander, что бы он исполнялся с параметром, который являет собой путь файла под курсором. Передать путь не проблема, в Тотале есть переменная %Р для этого. В Питоне используем sys.argv. Вопрос в том, как привести строку к виду, требуемому в Питоне. К тому же, скорее всего, надо перекодировать русские имена папок.
Lion1971
Уточню. В Тотале это выглядит так

скрипт тестовый
# -*- coding: cp866 -*-
import sys, os
s=sys.argv[1]
print s
#input()
если курсор Тотала в папке типа d:\tmp\proba proba\, то скрипт выводит только d:\tmp\proba. Как добиться правильного решения?
Lion1971
Сам себе отвечаю по ходу
Пробел в имени папки воспринимается как разделитель параметров.
Изменил немного скрипт
# -*- coding: cp866 -*-
import sys, os
s=sys.argv
s.remove(sys.argv[0])
print s
input()
вывод типа такого:
параметр d:\Сайт\День родини\
дает
['d:\\\xd1\xe0\xe9\xf2\\\xc4\xe5\xed\xfc', '\xf0\xee\xe4\xe8\xed\xe8\\']
теперь из этого списка нужно собрать строку с правильно расставленными пробелами и слэшами.
Какие идеи? Или я не по тому пути пошел?

4kpt
Поробуйте заменить
print s
на
for path in s:
    print path
JOHN_16
Lion1971
' '.join(s)
Lion1971
скрипт - тестовый, реальная задача - сформировать строку, содержащую путь к файлу, который находится под курсором ТС. Эту строку потом можо использовать в функции обработки содержимого католога.
Lion1971
' '.join(s)
так работает, вот только с кириллицей в именах папок беда.
скрипт срабатывает в консоли, а там кодировка СР866.
sp3
' '.join(s).decode("cp1251").encode("cp866")
Lion1971
sp3
' '.join(s).decode("cp1251").encode("cp866")
не хочет
Shaman
А если в начале скрипта вставить
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")
?
Мопед не мой.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB