Chouhdary Zia
Chouhdary Zia

Reputation: 21

PermissionError: [Errno 13] Permission denied @ PYTHON

i am trying to copy a file from one folder to another, but i am getting "PermissionError: [Errno 13] Permission denied". I am working within my home directory and i am the administrator of the PC. Went through many other previous posts .. tried all the options that are to my knowledge (newbie to programming) ... need some help.

import os
import shutil

src = "C:\\Users\\chzia\\Scripts\\test" # the file lab.txt is in this folder that needs to be copied to testcp folder.
dst = "C:\\Users\\chzia\\Scripts\\testcp"

for file in os.listdir(src):
  src_file = os.path.join(src, file)
  dst_file = os.path.join(dst, file)
  #shutil.copymode(src, dst) # i have tried these options too same error
  #shutil.copyfile(src, dst) # i have tried these options too same error
  shutil.copy(src, dst)

My target is to create an .exe that copies a file from the network location to a specific folder on a pc where the .exe is run. Thanks in advance for all the support and help.

Upvotes: 1

Views: 11396

Answers (3)

Konstantin Grigorov
Konstantin Grigorov

Reputation: 1612

If you Googled the exception and ended-up here, remember to provide the absolute/full path when using copy & copyfile from shutil. For example,

 abs_src_path = os.path.abspath(relative_file_path)
 abs_dst_path = os.path.abspath(relative_dst_path)
 shutil.copy(abs_src_path , abs_dst_path)

In the question above that is already done, but you might be the one who is mislead by the error message.

Upvotes: 0

koger23
koger23

Reputation: 322

I am sure I am late, but I ran into the same problem.

I noticed that in my case the problem is that the subfolder already exists. If I delete the folder at the start (it is OK in my case).

import os
import shutil    

dst = "C:\\Users\\chzia\\Scripts\\testcp" # target folder


def checkFolder(path):

    try:
        os.stat(path)
        shutil.rmtree(path)
    except:
        os.mkdir(path)


checkFolder(dst)

Upvotes: 0

Matz
Matz

Reputation: 371

Perhaps try to use shutil.copyfile instead:

shutil.copyfile(src, dst)

Similar old topic on Why would shutil.copy() raise a permission exception when cp doesn't?

Upvotes: 1

Related Questions