2016-08-30 334 views
1

我试图在Python中制作一个程序,将我的闪存驱动器(字母D :)上的文件复制到硬盘上的文件夹,但得到PermissionError: [Errno 13] Permission denied:'D:'Python - Errno 13权限在尝试复制文件时被拒绝

我的代码有问题的部分如下:

# 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目录来代替。

我已经阅读了其他几篇文章,但没有一篇与我的案例有关。我对这两个地点都有完整的管理权限。 任何帮助将不胜感激!

+0

我想这可能是因为你可能试图打开'D:'目录,就像它是一个文件一样。 – Harrison

+0

@Harrison有没有一种方法可以打开目录,以便我可以复制其中的文件? –

+0

是的,我会发布一个答案。 – Harrison

回答

0

正如我在上面的评论中所说的那样,好像你试图打开目录D:,就好像它是一个文件一样,这不会起作用,因为它不是文件,而是目录。

您可以使用os.listdir()列出所需目录中的所有文件,然后使用shutil.copy()复制文件。

这里是为每个的文档:

os.listdir()(您将通过完整的文件路径,此功能)

shutil.copy()(您将每个文件传递给该功能)

基本上你会将目录中的所有文件存储在一个变量中,如all_the_files = os.listdir(/path/to/file),然后通过all_the_files循环执行for each_file in all_the_files:之类的操作,然后使用shutil.copy()复制它们。

+0

所以,这工作完美,但现在我仍然得到相同的错误文件夹,我试图复制到...任何建议? –

+0

只是看着资料,发现正确shutil方法是'复制()',复制到指定目录。 'copyfile()'将文件的内容复制到另一个文件。再次感谢您的答案! –

+0

@QuintonShips很高兴我能够帮助:) – Harrison

相关问题