shutil: permission denied errors on windows

Antoine De Groote antoine at vo.lu
Tue Nov 7 18:38:17 CET 2006


Yes, that's exactly what was the case... But see my other post, that 
straightens things up...

Thanks!
antoine


John Henry wrote:
> 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