我正在寻找关于使用变量生成文件路径的最佳方法的一些建议,目前我的代码看起来类似于以下内容:
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
如果没有内置功能,我会自己写一个。
感谢您的任何意见。
答案 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'