以下是四条路径:
p1=r'\foo\bar\foobar.txt'
p2=r'\foo\bar\foo\foo\foobar.txt'
p3=r'\foo\bar\foo\foo2\foobar.txt'
p4=r'\foo2\bar\foo\foo\foobar.txt'
驱动器上可能存在也可能不存在目录。在每条路径中创建目录最优雅的方法是什么?
我在考虑在循环中使用os.path.split()
,并使用os.path.exists
检查目录,但我不知道有更好的方法。
答案 0 :(得分:46)
您正在寻找符合您需要的os.makedirs()
。
文档说明:
递归目录创建功能。 像mkdir(),但所有 需要中级目录 包含叶子目录。加薪 叶子的错误异常 目录已存在或不可存在 创建
因为如果叶子目录已经存在,它会失败,你需要在调用os.makedirs()
之前测试是否存在。
答案 1 :(得分:13)
在Python 3.6+上你可以这样做:
import pathlib
path = pathlib.Path(p4)
path.parent.mkdir(parents=True, exist_ok=True)
答案 2 :(得分:0)
在POSIX系统中构建路径的简单方法。假设您的路径类似于:// file generate-rough-svg.js
const { DOMImplementation, XMLSerializer } = require('xmldom');
const xmlSerializer = new XMLSerializer();
const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
const rough = require('roughjs');
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const rc = rough.svg(svg);
var data = [[40, 20], [140, 30], [100, 130]]
svg.appendChild(rc.polygon(data))
let xml = xmlSerializer.serializeToString(svg);
console.log(xml)
,其中node generate-rough-svg.js > image.svg
或dirPath = '../foo/bar'
都不存在:
foo