将文件保存到输出文件夹,如果不存在则创建它
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
我正在使用 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