Какой модуль или класс пути используют пользователи Python вместо os.path? - PullRequest
7 голосов
/ 10 августа 2009

Интересно, сколько людей используют модуль пути в Python, такой как модуль Джейсона Орендорфа, вместо использования os.path для объединения и разделения путей? Вы использовали:

Я знаю, что модуль пути Джейсона был преобразован в PEP 355 и отклонен BDFL. Похоже, что это было главным образом потому, что он пытался сделать все в одном классе.

Наш вариант использования в основном предназначен для упрощения объединения и разделения компонентов путей, поэтому мы были бы очень рады, если бы такой класс путей реализовал только операции типа split / join. Кто бы не хотел этого делать:

path(build_dir, path(source_file).name)

или это:

build_dir / path(source_file).name

вместо этого:

os.path.join(build_dir, os.path.basename(source_file))

Ответы [ 3 ]

11 голосов
/ 10 августа 2009

Я могу подобрать программу на Python и интерпретировать текущий стандартный метод без колебаний - он явный и нет двусмысленности:

os.path.join(build_dir, os.path.basename(source_file))

Динамическая типизация Python делает первый метод довольно сложным для понимания при чтении:

build_dir / path(source_file).name

Кроме того, не принято делить строки, что приводит к еще большей путанице. Откуда я знаю, что эти два не являются целыми числами? Или плавает? Вы не получите TypeError во время выполнения, если оба окажутся не строковыми типами.

Наконец,

path(build_dir, path(source_file).name)

Чем это лучше метода os.path?

Хотя они могут «упростить» кодирование (т. Е. Упростить написание), вы столкнетесь с конфликтом, если кому-то, кто не знаком с альтернативными модулями, потребуется поддерживать код.

Так что я думаю, что мой ответ: я не использую модуль альтернативного пути. В os.path есть все, что мне нужно, и его интерфейс не так уж и плох.

2 голосов
/ 26 апреля 2011

Простой, но полезный трюк таков:

импорт ОС

Path = os.path.join

Тогда вместо этого:

os.path.join (build_dir, os.path.basename (source_file))

Вы можете сделать это:

Path (build_dir, Path (source_file))

0 голосов
/ 10 августа 2009

Разделение строк для объединения путей может показаться «изворотливым трюком», но это именно то, чего программисты Python любят избегать (и, кстати, программисты в большинстве других языков). Модуль os.path широко используется и легко все поняли. С другой стороны, делать что-то напуганное с перегруженными операторами - непонятно, это ухудшает читабельность вашего кода, что должно быть одной из сильных сторон Python.

Программисты C ++, с другой стороны, любят подобные вещи. Возможно, это одна из причин, по которой код на C ++ может быть настолько трудным для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...