os.path.basename работает с URL-адресами, почему?

>>> os.path.basename('http://example.com/file.txt') 'file.txt' 

.. и я думал, что os.path.* работают только на локальных путях, а не на URL-адресах? Обратите внимание, что приведенный выше пример также выполнялся в Windows .. с аналогичным результатом.

5 Solutions collect form web for “os.path.basename работает с URL-адресами, почему?”

На практике многие функции os.path – это просто функции манипуляции с строкой (что особенно удобно для манипуляций с путями), и поскольку это безобидно и иногда удобно, хотя формально говоря «неверно», я сомневаюсь, что это изменится в ближайшее время – – для получения более подробной информации используйте следующий простой однострочный вкладыш в командной строке:

 $ python -c"import sys; import StringIO; x=StringIO.StringIO(); sys.stdout=x; import this; sys.stdout = sys.__stdout__; print x.getvalue().splitlines()[10][9:]" 

В окнах посмотрите исходный код: C: \ Python25 \ Lib \ ntpath.py

 def basename(p): """Returns the final component of a pathname""" return split(p)[1] 

os.path.split (в том же файле) просто разделите «\» (и далее еще)

Используйте источник Луки:

 def basename(p): """Returns the final component of a pathname""" i = p.rfind('/') + 1 return p[i:] 

Изменить (ответ на пояснения):

Он работает для URL-адресов случайно, вот и все. Из-за этого, использование его поведения можно считать запахом кода некоторыми.

Попытка «исправить» его (проверьте, не прошел ли путь передачи), также удивительно сложно

 www.google.com/test.php me@other.place.com/12 ./src/bin/doc/goto.c 

одновременно являются правильными именами путей и URL-адресами (относительными), так же как и http:/hello.txt (один /, и только в Linux, и это довольно глупо :)). Вы можете «исправить» его для абсолютных URL-адресов, но относительные будут работать. Обращение с одним специальным случаем по-другому является большим, нет в мире python.

Подводя итог: импортируйте это

Прямая косая черта также является допустимым разделителем пути в Windows.

Это просто, что в командной строке не принимаются пути, начинающиеся с символа /, потому что этот символ зарезервирован для переключателей args.

Зачем? Потому что это полезно для разбора URL-адресов, а также для локальных путей к файлам. Почему нет?

  • Django - использование обратного URL-адреса в настройках
  • Извлечение параметров из URL-адреса
  • как удалить python 302 URL-адрес перенаправления
  • Основная выборка HTML-объекта URL с Python 3.x
  • Есть ли функция для Python, которая похожа на getimagesize в PHP?
  • Преобразование URL-адреса в скриншот (скрипт)
  • Скрипт, который использует параметры и читает результаты
  • Разрешение относительного пути к абсолютному пути
  •  
    Interesting Posts for Van-Lav

    Как «уменьшить» несколько json-таблиц, хранящихся в столбце RDD, до одной таблицы RDD максимально эффективно

    PyCharm и фильтры для внешних инструментов

    Получите идентификатор учетной записи AWS от Boto

    В Celery, как мне запустить задачу, а затем запустить эту задачу для другой задачи и сохранить ее?

    В чем разница между обратным кортежем и перевернутым списком?

    Как получить данные json, используя HTTP POST-запрос в Django 1.6?

    ImportError после обновления python 2.7.3 до 2.7.6

    tf.Sequence Пример с многомерными массивами

    Как удалить смежные повторяющиеся элементы в списке, используя списки?

    Как элегантно проверить, имеет ли словарь определенную структуру?

    Как обучить нейронную сеть контролируемому набору данных, используя оптимизацию «черного ящика» с помощью pybrain?

    Создание тепловой карты с использованием панд TimeSeries

    Добавьте новый столбец и вставьте определенные значения в соответствии с определенным интервала в python

    Построение ориентированных графов в Python таким образом, чтобы показать все ребра отдельно

    Запись в файл Stata в Python. Ядро умерло. Зачем? Что делать?

    Python - лучший язык программирования в мире.