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() 函数正在寻找将文档保存到的路径,我没有意识到它需要完整的目标路径,包括文档本身。
感谢大家的反馈,让我找到了正确的方向。
我的网络上有一个年度文件,其中包含基于一年中每周的子文件夹。我正在尝试编写一个脚本,它将复制保存在我的桌面上的“模板”文档,然后遍历年度文件,并将模板粘贴到每个每周的子文件夹中。
我有一个生成“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() 函数正在寻找将文档保存到的路径,我没有意识到它需要完整的目标路径,包括文档本身。
感谢大家的反馈,让我找到了正确的方向。