Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > shutil: permission denied errors on windows

Reply
Thread Tools

shutil: permission denied errors on windows

 
 
Antoine De Groote
Guest
Posts: n/a
 
      11-06-2006
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
[...]
 
Reply With Quote
 
 
 
 
John Henry
Guest
Posts: n/a
 
      11-07-2006
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
> [...]


 
Reply With Quote
 
 
 
 
Antoine De Groote
Guest
Posts: n/a
 
      11-07-2006
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
>> [...]

>

 
Reply With Quote
 
jUrner@arcor.de
Guest
Posts: n/a
 
      11-07-2006

Antoine De Groote schrieb:

> 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
>


Just a guess, update you virus scanner. Maybe someone sits in the back
and doesn't like what you are doing.

Regards Jürgen

 
Reply With Quote
 
John Henry
Guest
Posts: n/a
 
      11-07-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
> >> [...]

> >


 
Reply With Quote
 
Antoine De Groote
Guest
Posts: n/a
 
      11-07-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
>>>> [...]

>

 
Reply With Quote
 
Antoine De Groote
Guest
Posts: n/a
 
      11-07-2006
Thanks for your replies, guys. I found the problem now.

Actually the problem arised just before the code that I had in my
original post.

Here are the 2 lines that mess things up. It's those that are commented
out. If not commented, the errors were raised.

Clearly there is an error in the second line. It includes subdirs and s
instead of files and f. Took me 2 days to finally see it.

for dir, subdirs, files in os.walk(tree_top):

# subdirs[:] = [s for s in subdirs if
os.path.join(dir,s).replace('\\', '/') not in excluded]
# files[:] = [f for f in subdirs if
os.path.join(dir,s).replace('\\', '/') not in excluded]

for s in subdirs:
bak_sub = os.path.join(dir, s).replace(tree_top, backup_dir)
if not os.path.exists(bak_sub):
log('Creating directory %s' % bak_sub)
os.mkdir(bak_sub)

for l in files:
[code pasted earlier]...



But what still beats me is why my minimal example with folders 'a' and
'b' didn't work... It was independent of this code...

Anyway, my program works now, and that's for the moment the most
important thing.

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
>> [...]

>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Intermittent "permission denied" errors when using os.rename and a recently deleted path?? Russell Warren Python 4 07-27-2006 09:43 PM
IE: Permission Denied Error and Other Strange Errors webmaster@openwebware.com Javascript 0 03-18-2006 09:00 AM
Occasional OSError: [Errno 13] Permission denied on Windows Alec Wysoker Python 11 01-12-2006 06:56 PM
preventing Access/Permission Denied errors Nick Javascript 5 05-09-2004 08:46 PM
JavaScript Permission Denied errors with ASP.NET built in client JS Nathan ASP .Net 1 05-05-2004 04:00 PM



Advertisments