Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение под *NIX системы > Перевести в транслит пару десятков имен файлов


Автор: GrayCardinal 24.7.2009, 16:20
сабж.
ОС - Linux.
Самому писать скрипт дико влом :(

Автор: pythonwin 24.7.2009, 16:46
http://www.google.com/search?q=python+translit

Добавлено через 1 минуту и 22 секунды
http://pyobject.ru/projects/pytils/
Цитата

При помощи pytils можно сделать транслитерацию:

>>> print pytils.translit.translify(u"Проверка связи")
'Proverka svyazi'
>>> pytils.translit.detranslify("Proverka svyazi")
u'Проверка связи'

В translify вывод - str, а не unicode. В detranslify вход может быть как unicode, так и str.

И сделать строку для URL (удаляются лишние символы, пробелы заменяются на дефисы):

>>> pytils.translit.slugify(u"тест и еще раз тест")
'test-i-esche-raz-test'

Автор: GrayCardinal 24.7.2009, 18:42
pythonwin, 
Я в питоне ни в зуб ногой. Ты не мог бы готовый скрипт вывалить ?

Автор: powerfox 24.7.2009, 22:42
Код

#! /usr/bin/env python

import sys
from pytils.translit import translify

for line in sys.stdin.readlines():
  print translify(unicode(line, 'utf-8'))


Код

chmod +x translit.py


Далее пишем скрипт для любимой оболочки ;)

Добавлено через 2 минуты и 22 секунды
GrayCardinal, для установки pytils:

1. Установить пакет python-setuptools.
2.
Код

sudo easy_install pytils

Автор: GrayCardinal 25.7.2009, 12:00
powerfox, 
Я не правильно выразился... Мне файлы надо переименовать в транслит.  smile 

Автор: pythonwin 25.7.2009, 13:32
Цитата(GrayCardinal @  24.7.2009,  21:42 Найти цитируемый пост)
Я в питоне ни в зуб ногой. Ты не мог бы готовый скрипт вывалить ? 

так либо ты не GrayCardinal,  либо я что-то пропустил, т.к. нак портале по питону я часто твои посты читаю.

Цитата(GrayCardinal @  25.7.2009,  15:00 Найти цитируемый пост)
Я не правильно выразился... Мне файлы надо переименовать в транслит.  smile  

тебе нужно перекодировать только названия у файлов или и содержимое файлов?
рекурсивно в подкаталогах или только в текущем каталоге?

Автор: bilbobagginz 25.7.2009, 13:37
Код

#! /usr/bin/env python
import sys
from pytils.translit import translify
from os import rename,path

for name in sys.stdin.readlines():
    new_name=translify(unicode(name, 'utf-8'))
    if (path.exist(name)):
        rename(name,new_name)


надо конечно тут всякие тесты добавить - что делать если напр. файл - это каталог,
это уже оставим "как упражнение читателю", сам допендривай ;-), с мозгами у тебя нет напряжёнки.

Автор: GrayCardinal 25.7.2009, 13:39
pythonwin, 
Кто-то под меня косит :(       )))
Названия файлов (без содержимого), названия каталогов, рекурсивно...

Добавлено через 44 секунды
Цитата

с мозгами у тебя нет напряжёнки.

Спасибо на добром слове  smile 

Автор: bilbobagginz 25.7.2009, 13:45
посмотри мануал os.path,  там есть несколько тестов.
найди тест на "каталог ли я", а далее,
  • попытка нырнуть
  • генерим список файлов
  • скармливаем его новому одноимённому процессу
  • по истечении возвращаемся наверьх
было бы неплохо всё это сделать в потоках, параллельно... но это на сл. стадии ;)



Автор: powerfox 25.7.2009, 14:11
Цитата(bilbobagginz @  25.7.2009,  14:45 Найти цитируемый пост)
посмотри мануал os.path,  там есть несколько тестов.


bilbobagginz, да можно и без питона прямо на бэше, имея программу, которая делает транслитерацию имён.

Автор: pythonwin 25.7.2009, 14:12
Цитата(GrayCardinal @  25.7.2009,  16:39 Найти цитируемый пост)
Кто-то под меня косит :(       )))

а это разве не ты - http://python.su/forum/profile.php?id=2931?

Автор: GrayCardinal 25.7.2009, 14:41
pythonwin, 
Ах, это. Это я, ага. Только заметь, вопросы - то ЛАМЕРСКИЕ smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)