将文件保存到输出文件夹,如果不存在则创建它

Save file to output folder creating it if it does not exist

我正在使用 pathlib 库来处理脚本中的 I/O。我读取了一个路径为:

的文件
PosixPath('input/ADE/data_f34.dat')

父文件夹 input/ 是固定的,但子文件夹 (ADE) 和文件名都不是固定的,即它们会随着每次迭代而变化。我需要一个将军来存储一个 new 文件 同名 ,到路径:

PosixPath('output/ADE/data_f34.dat')

即,尊重子文件夹和文件名,但将 input/ 更改为 output/output 文件夹始终存在,但我不知道子文件夹 output/ADE/ 是否存在,所以如果不存在,我需要创建。如果同名文件已经存在,我可以简单地覆盖它。

使用 pathlib 处理此问题的正确方法是什么?

这是您要找的吗?

import pathlib

src = pathlib.PosixPath('input/ADE/data_f34.dat')
dst = pathlib.Path('output', *src.parts[1:])
dst.parent.mkdir(parents=True, exist_ok=True)
with open(dst, 'w') as d, open(src) as s:
    d.write(s.read())

您可以使用 relative_to:

from pathlib import PosixPath

filename = PosixPath('input/ADE/data_f34.dat')
output_dir = PosixPath('output')

path = output_dir / filename.relative_to('input')
path.parent.mkdir(parents=True, exist_ok=True)

print(path)

版画

output/ADE/data_f34.dat