os.path.dirname и os.path.join - PullRequest
       35

os.path.dirname и os.path.join

0 голосов
/ 26 сентября 2019
modpath = os.path.dirname(os.path.abspath(sys.argv[0]))
datapath = os.path.join(modpath, '../../datas/orcl-1995-2014.txt')

Я действительно новичок в Python ... Могу я спросить, должен ли я понимать коды следующим образом?

modpath = os.path.dirname(os.path.abspath(sys.argv[0]))

означает сохранение имени папкитекущее местоположение в формате абсолютного пути в переменной modpath?Это означает, что не точный путь к текущему местоположению, а к его папке?

next,datapath = os.path.join(modpath, '../../datas/orcl-1995-2014.txt')

означает сохранение строки соединения пути, сохраненного в modpath, с более поздней строкой?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Сначала давайте разберемся, что делает каждая функция:

os.path.abspath(path)

Возвращает нормализованную абсолютизированную версию пути пути.

Выиспользуется:

os.path.abspath(sys.argv[0])

Пример:

>>> print(os.path.abspath(sys.argv[0]))
/usr/bin/ipython

Эквивалент Pathlib:

>>> pathlib.Path(sys.argv[0]).resolve()
/usr/bin/ipython

os.path.dirname(path)

Возвратыимя каталога path.

Вы использовали:

os.path.dirname(os.path.abspath(sys.argv[0]))

Пример:

>>> os.path.dirname('/usr/bin/ipython')
/usr/bin

Эквивалент Pathlib:

import pathlib
path = pathlib.Path(sys.argv[0])
modpath = path.parent

os.path.join(path1, path2, ...)

Объединяет один или несколько компонентов пути.

Вы использовали:

os.path.join(modpath, '../../datas/orcl-1995-2014.txt')

Пример:

>>> print(os.path.join('/etc', 'dir1', '..', 'dir2', 'dir3/dir4'))
/etc/dir1/../dir2/dir3/dir4

Эквивалент Pathlib:

datapath = modpath.parent.parent / 'datas' / 'orcl-1995-2014.txt'

Теперь давайте следуем по коду:

  1. Resolve sys.argv[0] - Какой путь к вашему скрипту Python.Допустим, это /usr/bin/python.
  2. Применить os.path.abspath к /usr/bin/python - Вы можете попробовать это в интерпретаторе.Результат - /usr/bin/python, поскольку это уже абсолютный путь.
  3. Применить os.path.dirname к результату (/usr/bin/python).Результатом является имя каталога usr/bin/python', which is / usr / bin . Save it in modpath`.
  4. Объединение modpath (/usr/bin/) с ../../datas/orcl-1995-2014.txt с использованием os.path.join - что приводит к /usr/bin/../../datas/orcl-1995-2014.txt.Сохранить на datapath.
0 голосов
/ 26 сентября 2019

os.path.abspath (sys.argv [0]) вернет абсолютный путь. os.path.dirname (path) функция возвращает заголовок пути.

modpath будет заголовком пути.

os.path.join (path1, path2) * Функция 1012 * объединяет два пути к каталогам.

Надеюсь, это поможет!

...