Предатель Бережной ([info]shmel) wrote,

Объединение путей в Питоне

В Питоне есть такая библиотека os.path, для манипуляций с именами файлов. В частности,
os.path.join()
объединяет элементы пути, учитывая соображения кроссплатформенности. Т.е., например,
os.path.join('p1', 'p2', 'p3')
под Linux выдаст p1/p2/p2, а под винду p1\p2\p3.
Последнее время приходится много этим пользоваться, так что эти постоянные вызовы утомляют пальцы и понижают читабельность. Делаем вот что:
class path_wrapper(str):
  def __div__(self, other):
   if other==E: return str(self)
   return path(os.path.join(self, other))

E=0
Q=path_wrapper()
После чего пишем типа Q/var1/'var2'/var2/E, всё объединяется. Компромисс, но что поделаешь.
"E" нужно было, потому, что либа, которой я пользуюсь, требует только строки, нарушая конвенции duck typing.
Такая вот монада вышла.
Upd: Оказывается, такой вариант рассматривали, но потом отказались.
Tags: python

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…