shutil: permission denied errors on windows

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Antoine De Groote

    shutil: permission denied errors on windows

    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(di r, l)
    to_file = from_file.repla ce(tree_top, backup_dir)
    try:
    if not os.path.exists( to_file):
    log('Copying new %s' % from_file)
    counter_new += 1
    shutil.copy2(fr om_file, to_file)
    elif int(os.path.get mtime(from_file )) >
    int(os.path.get mtime(to_file)) :
    log('Copying modified %s' % from_file)
    counter_mod += 1
    shutil.copy2(fr om_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(fr om_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+'DIF F_SIZE')
    shutil.copy2(fr om_file, to_file)
    else:
    #log('not treated: %s' % l)
    pass

    except (OSError, IOError), e:
    not_accessible += 1
    print e
    [...]
  • John Henry

    #2
    Re: shutil: permission denied errors on windows

    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(di r, l)
    to_file = from_file.repla ce(tree_top, backup_dir)
    try:
    if not os.path.exists( to_file):
    log('Copying new %s' % from_file)
    counter_new += 1
    shutil.copy2(fr om_file, to_file)
    elif int(os.path.get mtime(from_file )) >
    int(os.path.get mtime(to_file)) :
    log('Copying modified %s' % from_file)
    counter_mod += 1
    shutil.copy2(fr om_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(fr om_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+'DIF F_SIZE')
    shutil.copy2(fr om_file, to_file)
    else:
    #log('not treated: %s' % l)
    pass
    >
    except (OSError, IOError), e:
    not_accessible += 1
    print e
    [...]

    Comment

    • Antoine De Groote

      #3
      Re: shutil: permission denied errors on windows

      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(di r, l)
      > to_file = from_file.repla ce(tree_top, backup_dir)
      > try:
      > if not os.path.exists( to_file):
      > log('Copying new %s' % from_file)
      > counter_new += 1
      > shutil.copy2(fr om_file, to_file)
      > elif int(os.path.get mtime(from_file )) >
      >int(os.path.ge tmtime(to_file) ):
      > log('Copying modified %s' % from_file)
      > counter_mod += 1
      > shutil.copy2(fr om_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(fr om_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+'DIF F_SIZE')
      > shutil.copy2(fr om_file, to_file)
      > else:
      > #log('not treated: %s' % l)
      > pass
      >>
      > except (OSError, IOError), e:
      > not_accessible += 1
      > print e
      >[...]
      >

      Comment

      • jUrner@arcor.de

        #4
        Re: shutil: permission denied errors on windows


        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

        Comment

        • John Henry

          #5
          Re: shutil: permission denied errors on windows

          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(di r, l)
          to_file = from_file.repla ce(tree_top, backup_dir)
          try:
          if not os.path.exists( to_file):
          log('Copying new %s' % from_file)
          counter_new += 1
          shutil.copy2(fr om_file, to_file)
          elif int(os.path.get mtime(from_file )) >
          int(os.path.get mtime(to_file)) :
          log('Copying modified %s' % from_file)
          counter_mod += 1
          shutil.copy2(fr om_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(fr om_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+'DIF F_SIZE')
          shutil.copy2(fr om_file, to_file)
          else:
          #log('not treated: %s' % l)
          pass
          >
          except (OSError, IOError), e:
          not_accessible += 1
          print e
          [...]

          Comment

          • Antoine De Groote

            #6
            Re: shutil: permission denied errors on windows

            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(di r, l)
            >>> to_file = from_file.repla ce(tree_top, backup_dir)
            >>> try:
            >>> if not os.path.exists( to_file):
            >>> log('Copying new %s' % from_file)
            >>> counter_new += 1
            >>> shutil.copy2(fr om_file, to_file)
            >>> elif int(os.path.get mtime(from_file )) >
            >>>int(os.path. getmtime(to_fil e)):
            >>> log('Copying modified %s' % from_file)
            >>> counter_mod += 1
            >>> shutil.copy2(fr om_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(fr om_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+'DIF F_SIZE')
            >>> shutil.copy2(fr om_file, to_file)
            >>> else:
            >>> #log('not treated: %s' % l)
            >>> pass
            >>>>
            >>> except (OSError, IOError), e:
            >>> not_accessible += 1
            >>> print e
            >>>[...]
            >

            Comment

            • Antoine De Groote

              #7
              Re: shutil: permission denied errors on windows

              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_to p):

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

              for s in subdirs:
              bak_sub = os.path.join(di r, s).replace(tree _top, backup_dir)
              if not os.path.exists( bak_sub):
              log('Creating directory %s' % bak_sub)
              os.mkdir(bak_su b)

              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(di r, l)
              > to_file = from_file.repla ce(tree_top, backup_dir)
              > try:
              > if not os.path.exists( to_file):
              > log('Copying new %s' % from_file)
              > counter_new += 1
              > shutil.copy2(fr om_file, to_file)
              > elif int(os.path.get mtime(from_file )) >
              >int(os.path.ge tmtime(to_file) ):
              > log('Copying modified %s' % from_file)
              > counter_mod += 1
              > shutil.copy2(fr om_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(fr om_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+'DIF F_SIZE')
              > shutil.copy2(fr om_file, to_file)
              > else:
              > #log('not treated: %s' % l)
              > pass
              >>
              > except (OSError, IOError), e:
              > not_accessible += 1
              > print e
              >[...]
              >

              Comment

              Working...