简体   繁体   中英

Permission denied on shutil.move on image files

I am trying to move some files around. I can move any extension type except .png, .jpg, or .gif. When I try to move those types of files I get "IOError: [Errno 13] Permission denied" even though I am the admin. Code below

import os, glob, shutil
dir = r'C:\\Users\\jcan4\\Desktop\\testmove\\*'
print(dir)
files = glob.glob(dir)
files.sort(key=os.path.getmtime)


for i, file in enumerate(files, start=1):
    print(file)
    oldext = os.path.splitext(file)[1]
    shutil.move(file,  'Attachment-%s' % (i) + oldext)

First things first , you're double escaping your dir variable:

print(r'C:\\Users\\jcan4\\Desktop\\testmove\\*')
# Yields 'C:\\\\Users\\\\jcan4\\\\Desktop\\\\testmove\\\\*' !!

# What you really meant was either one of the following:
dir_harderToRead = 'C:\\Users\\jcan4\\Desktop\\testmove\\*'
dir_easyToRead = r'C:\Users\jcan4\Desktop\testmove\*'

If you are still experiencing the error , it's because you are not giving the python script permissions to move the file. There are a couple ways to get around this:

Windows

(This applies to the asked question)

  1. Open command prompt (I see your file path and am assuming you're on windows) with administrative rights. ( see here )

  2. Change ownership of the images to you. (see here for windows 10 or here for windows 7 )

Linux (MacOS)

(This applies to people on Linux that may have the same problem)

  1. Run the python script with root privileges:
# At command line
sudo python your_script_name.py
  1. Change ownership of file to yourself:
# At command line
# Changes ownership of entire directory (CAREFUL):
chmod 755 /absolute/path/to/dir
chmod 755 relative/path/to/dir

# Or you can change file by file:
chmod 755 /absolute/path/to/file
chmod 755 relative/path/to/file

For more info, I used this site on permissions. (If someone has a numerical value than 755 for chmod please say so.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM