shutil: permission denied errors on windows

John Henry john106henry at hotmail.com
Tue Nov 7 18:18:16 CET 2006


Okay, it's always good that strange things are repeatable and happens
with simple scripts.

Are you saying "a" is a folder?  So, the failure is only with copying
folder?  Not individual file?



Antoine De Groote wrote:
> Yes it's strange, I never had the problem before, either. It seems now
> to be only the case for folders. A very simple
>
> shutil.copy('a', 'b')
>
> already fails with the error message.
>
> I reinstalled Python, but that didn't change anything...
>
> Regards,
> antoine
>
> John Henry wrote:
> > I use the copy function a lot and never have problem.  I suggest that
> > you write a no brainer standalone test code and if it still fails
> > there, then you have a problem with your installation.
> >
> > Antoine De Groote wrote:
> >> Google tells quite some things about it, but none of them are satisfactory.
> >>
> >> I'm on Windows, and shutil operations (e.g. move, copy) throw [Errno 13]
> >> Permission denied all the time, for the source files. It seems that this
> >> is the case for all my files. But what I don't understand is that
> >> yesterday it still worked. I didn't change anything on my system though
> >> (at least not that I am aware of). I restarted the computer several
> >> times to see if that helped, but it didn't. Also I can't find a process
> >> that would be using the files...
> >>
> >> Has anybody experienced this problem before, or have a solution?
> >>
> >> Kind regards,
> >> antoine
> >>
> >> Here's the code that throws the errors
> >>
> >> [...]
> >> for l in files:
> >>              from_file = os.path.join(dir, l)
> >>              to_file = from_file.replace(tree_top, backup_dir)
> >>              try:
> >>                  if not os.path.exists(to_file):
> >>                      log('Copying new      %s' % from_file)
> >>                      counter_new += 1
> >>                      shutil.copy2(from_file, to_file)
> >>                  elif int(os.path.getmtime(from_file)) >
> >> int(os.path.getmtime(to_file)):
> >>                      log('Copying modified %s' % from_file)
> >>                      counter_mod += 1
> >>                      shutil.copy2(from_file, to_file)
> >>                  elif os.path.getsize(from_file) > os.path.getsize(to_file):
> >>                      log('Sizes differ, but not rest: Copying %s' %
> >> from_file)
> >>                      counter_special += 1
> >>                      shutil.copy2(from_file, to_file)
> >>                  elif os.path.getsize(from_file) < os.path.getsize(to_file):
> >>                      log('Orig file smaller than backup file: Copying
> >> %s' % from_file)
> >>                      counter_special += 1
> >>                      shutil.copy2(to_file, backup_dir+'DIFF_SIZE')
> >>                      shutil.copy2(from_file, to_file)
> >>                  else:
> >>                      #log('not treated: %s' % l)
> >>                      pass
> >>
> >>              except (OSError, IOError), e:
> >>                  not_accessible += 1
> >>                  print e
> >> [...]
> >




More information about the Python-list mailing list