我正在使用pathlib库来处理脚本中的I/O。我读取了一个文件,路径为:
PosixPath('input/ADE/data_f34.dat')
父文件夹input/
是固定的,但子文件夹(ADE
(和文件名都不是固定的,即它们随着每次迭代而变化。我需要一个通用程序来存储一个新的文件,该文件的名称为,路径为:
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