Python - 当尝试复制文件时出现 Errno 13 权限被拒绝的错误

3

我正在尝试用Python编写一个程序,将我的闪存驱动器(D:盘)上的文件复制到硬盘上的一个文件夹中,但是出现了PermissionError:[Errno 13] Permission denied: 'D:'错误。

代码的问题部分如下:

# Copy files to folder in current directory
def copy():
    source = getsource()

    if source != "failure":

        copyfile(source, createfolder())
        wait("Successfully backup up drive"
             "\nPress 'Enter' to exit the program")

    else:
        wait("No USB drive was detected"
             "\nPress 'Enter' to exit")

# Create a folder in current directory w/ date and time
def createfolder():
    name = strftime("%a, %b %d, %Y, %H.%M.%S", gmtime())
    dir_path = os.path.dirname(os.path.realpath(__file__))
    new_folder = dir_path + "\\" + name
    os.makedirs(new_folder)

return new_folder

一切看起来都很正常,直到 copyfile() 函数运行时,它返回了错误。 我尝试用文件的目的地替换 getsource(),但它返回了相同的权限错误,只是针对 new_folder 目录而言。

我已经阅读了其他几篇文章,但似乎都与我的情况无关。我对这两个位置都拥有完整的管理员权限。 如果能帮忙解决问题将不胜感激!


我认为这可能是因为您试图将 D: 目录打开,就好像它是一个文件一样。 - Harrison
@Harrison 有没有办法让我能够打开目录,以便我可以复制其中的文件? - Quinton Ships
是的,我会发布一个答案。 - Harrison
@ Harrison 謝謝你! - Quinton Ships
给你了,这应该足够让你开始了。 - Harrison
2个回答

5
正如我在上面的评论中所述,你似乎尝试以文件方式打开目录 D:,这是行不通的,因为它不是一个文件,而是一个目录。
你可以使用 os.listdir() 列出所需目录中的所有文件,然后使用 shutil.copy() 按照你的意愿复制这些文件。
以下是每个函数的文档:
os.listdir()(你将向该函数传递完整的文件路径)
shutil.copy()(你将向该函数传递每个文件)
基本上,你需要将目录中的所有文件存储在变量中,例如: all_the_files = os.listdir(/path/to/file),然后通过像 for each_file in all_the_files: 这样的方式来遍历 all_the_files,然后使用 shutil.copy() 来按照你的意愿复制它们。

所以,那个方法完美地运行了,但现在我仍然收到同样的错误,因为我正在尝试复制的文件夹... 有任何建议吗? - Quinton Ships
刚刚查看了文档,发现正确的shutil方法是copy(),可以将文件复制到指定目录。而copyfile()则是将一个文件的内容复制到另一个文件中。再次感谢您的回答! - Quinton Ships
@QuintonShips 很高兴我能帮到你 :) - Harrison

3
如果您想要复制整个目录及其内容,可以使用shutil.copytree(source, destination)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接