os.path.dirname和os.path.join

时间:2019-09-26 13:04:48

标签: python os.path

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 :(得分:0)

os.path.abspath(sys.argv [0])将返回绝对路径。 os.path.dirname(path)函数返回路径的开头。

modpath 将是路径的开头。

os.path.join(path1,path2)函数将连接两个目录路径。

希望这会有所帮助!

答案 1 :(得分:0)

首先,让我们了解每个函数的作用:

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. 解决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. 使用/usr/bin/../../datas/orcl-1995-2014.txt与modpath(os.path.join)串联-产生/usr/bin/../../datas/orcl-1995-2014.txt。将其保存在datapath上。