python - Python-将完整路径复制到目标文件夹并保留路径结构

标签 python

源代码结构如下:

Z:\Archived\2018\2018_01_01\BOM_Archived\A.nc.gz
...........................\BOM_Archived\B.nc.gz
...........................\BOM_Archived\C.nc.gz
...........................\other files and folders

Z:\Archived\2018\2018_01_02\BOM_Archived\A.nc.gz
...........................\BOM_Archived\B.nc.gz
...........................\BOM_Archived\C.nc.gz
...........................\other files and folders

Z:\Archived\2018\2018_01_03\BOM_Archived\A.nc.gz
...........................\BOM_Archived\B.nc.gz
...........................\BOM_Archived\C.nc.gz
...........................\other files and folders

...
...
...

Z:\Archived\2018\2018_12_31\BOM_Archived\A.nc.gz
...........................\BOM_Archived\B.nc.gz
...........................\BOM_Archived\C.nc.gz
...........................\other files and folders


我只需要将每个日期的整个BOM_Archive文件夹及其包含的A.nc.gz,B.nc.gz和C.nc.gz文件复制到:

V:\Historical_BOM_Raw\


并保持路径结构。不应复制“ \其他文件和文件夹”。

V:\Historical_BOM_Raw\2018\2018_01_01\BOM_Archived\A.nc.gz
..................................................\B.nc.gz
..................................................\C.nc.gz

V:\Historical_BOM_Raw\2018\2018_01_02\BOM_Archived\A.nc.gz
..................................................\B.nc.gz
..................................................\C.nc.gz

...
...

V:\Historical_BOM_Raw\2018\2018_12_31\BOM_Archived\A.nc.gz
..................................................\B.nc.gz
..................................................\C.nc.gz


我正在考虑每次创建一个日期文件夹并从源文件夹复制文件,但这应该是一种更有效的方法吗?

最佳答案

import shutil
shutil.copytree("Z:/Archived/", "V:/Historical_BOM_Raw/")


Shutil存在一些文件元数据问题。如果您需要这些,则可以考虑另一种选择。更多:https://docs.python.org/3/library/shutil.html

编辑:

import os
import shutil

def listdir_fullpath(d): # Get full path instead of folder name
    return [os.path.join(d, f) for f in os.listdir(d)]

for year in listdir_fullpath("Z:/Archived"):
    for date in listdir_fullpath(year):
        for folder in listdir_fullpath(date):
            if folder[-12:] == "BOM_Archived":
                newdir = os.path.join("V:/Historical_BOM_Raw/",date.replace("Z:/Archived/", ""))
                shutil.copytree(folder, newdir)

关于python - Python-将完整路径复制到目标文件夹并保留路径结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58463405/

相关文章:

Python 字符串帮助夏威夷语单词发音

python - Tensorflow MNIST(权重和偏置变量)

python unittest assertRaises在assertRaises失败时抛出异常

python - lxml.cssselect CSSSelector 不支持属性

python - 如何使用 SQLAlchemy 的 connection.execute 插入 CURRENT TIMESTAMP 的值

python - 无法使用python将元素列表写入文件

Python 3 - 从 PDF 中挖掘数据

python - 对于给定的 fp 精度,检查 Python 中的数字是否有理数

python - ["A"for x in range(0,10) or "B"if x == 9] 在 python 中的正确表达式?

python - 从 Python 中的日期中减去一个月?