从变量创建文件路径

时间:2010-09-20 13:27:42

标签: python path

我正在寻找关于使用变量生成文件路径的最佳方法的一些建议,目前我的代码看起来类似于以下内容:

path = /my/root/directory
for x in list_of_vars:
        if os.path.isdir(path + '/' + x):  # line A
            print(x + ' exists.')
        else:
            os.mkdir(path + '/' + x)       # line B
            print(x + ' created.')

对于如上所示的A行和B行,是否有更好的方法来创建文件路径,因为这会越深入我深入研究目录树?

我设想使用现有的内置方法如下:

create_path(path, 'in', 'here')

生成/my/root/directory/in/here

形式的路径

如果没有内置功能,我会自己写一个。

感谢您的任何意见。

3 个答案:

答案 0 :(得分:74)

是的,有这样的内置功能:os.path.join

>>> import os.path
>>> os.path.join('/my/root/directory', 'in', 'here')
'/my/root/directory/in/here'

答案 1 :(得分:12)

你想从os.path。

获取path.join()函数
>>> from os import path
>>> path.join('foo', 'bar')
'foo/bar'

这使用os.sep(而不是可移动性较低的'/')构建路径,并且比使用+更有效(通常)。

但是,这实际上不会创建路径。为此,你必须做一些像你在问题中所做的事情。你可以这样写:

start_path = '/my/root/directory'
final_path = os.join(start_path, *list_of_vars)
if not os.path.isdir(final_path):
    os.makedirs (final_path)

答案 2 :(得分:0)

您还可以在pathlib中使用面向对象的路径(从Python 3.4开始作为标准库提供):

from pathlib import Path

start_path = Path('/my/root/directory')
final_path = start_path / 'in' / 'here'