Отказано в доступе на shutil.move для файлов изображений - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь переместить некоторые файлы.Я могу переместить любой тип расширения, кроме .png, .jpg или .gif.Когда я пытаюсь переместить эти типы файлов, я получаю «IOError: [Errno 13] Permission denied», хотя я и являюсь администратором.Код ниже

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)

1 Ответ

0 голосов
/ 14 мая 2019

Перво-наперво , вы дважды избегаете своей переменной dir:

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\*'

Если вы по-прежнему сталкиваетесь с ошибкой , это потому, что вы не предоставляете разрешения python script для перемещения файла. Есть несколько способов обойти это:

Windows

(Это относится к заданному вопросу)

  1. Откройте командную строку (я вижу ваш путь к файлу и я предполагаю, что вы в Windows) с правами администратора. ( см. Здесь )

  2. Смена владельца изображения для вас. (см. здесь для Windows 10 или здесь для Windows 7 )

Linux (MacOS)

(Это относится к людям в Linux, которые могут иметь такую ​​же проблему)

  1. Запустить скрипт python с правами root:
# At command line
sudo python your_script_name.py
  1. Смена владельца файла на себя:
# 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

Для получения дополнительной информации я использовал этот сайт на разрешениях. (Если кто-то имеет числовое значение, чем 755 для chmod, скажите, пожалуйста.)

...