Python - 将文档粘贴到目录中的每个文件夹

Python - Paste document to each folder in directory

我的网络上有一个年度文件,其中包含基于一年中每周的子文件夹。我正在尝试编写一个脚本,它将复制保存在我的桌面上的“模板”文档,然后遍历年度文件,并将模板粘贴到每个每周的子文件夹中。

我有一个生成“PermissionError:[Errno 13] Permission denied:”的脚本,但我不确定原因,因此不确定该怎么做。

import os
import shutil

myPath = r"""K:\PROCESS\YEAR"""
myDocument = r"""C:\Users\me.domain\OneDrive - Co Name\Desktop\Template.xlsx"""

for filename in os.listdir(myPath):
    with open(os.path.join(myPath,filename)) as myFile:
        copyfile(myDocument, myFile)

错误是,

PermissionError: [Errno 13] Permission denied: ‘K:\PROCESS\YEAR\WEEK 1’

@行'with open(os.path.join(myPath,filename)) as myFile:'

我尝试将目标文档移动到程序根目录并根据一些建议修改了脚本,如下所示。

import os
from shutil import copy2

my_doc_path = "Template.xlsx"
myPath = "K:\PROCESS\YEAR"

for directory in os.listdir(myPath):
    copy2(my_doc_path, directory)

我不再收到任何错误;但是,目标文档没有被复制到目标目录。相反,在程序根目录中创建了一个具有目标目录名称的不起眼的“文件”,如下图所示。


什么最终起作用了:

import os
from shutil import copy

my_doc_path = "Template.xlsx"
myPath = "K:\PROCESS\YEAR"

for directory in os.listdir(myPath):
    
    target_directory = myPath + '\' + directory
    check_file = target_directory + '\' + my_doc_path
    
    if not os.path.exists(check_file):
        copy(my_doc_path, target_directory)

不要打开文件,而是尝试将文件复制到目标文件夹中。

from shutil import copy

my_doc_path = "/here/is/my/doc/path.xlsx"
myPath = "K:\PROCESS\YEAR"

for directory in os.listdir(myPath):
    copy(my_doc_path, directory)

或者如果您还需要元数据:

from shutil import copy2

my_doc_path = "/here/is/my/doc/path.xlsx"
myPath = "K:\PROCESS\YEAR"

for directory in os.listdir(myPath):
    copy2(my_doc_path, directory)

为什么 copy/copy2 而不是 copyfile?看看这个 comment

需要将文档名称附加到 myPath 变量。我错误地假设 copy2() 函数正在寻找将文档保存到的路径,我没有意识到它需要完整的目标路径,包括文档本身。

感谢大家的反馈,让我找到了正确的方向。