Что не так с этим Python кодом? PermissionError: [Errno 13] - PullRequest
0 голосов
/ 16 февраля 2020

Предполагается, что эта программа сможет загружать содержимое с http: URL и сохранять его в выбранном пользователем каталоге.

import urllib.request
import urllib.error

def run_user_interface() -> None:
    url = _choose_url()
    if len(url) == 0:
    return
    else:
        print()
        save_path = _choose_save_path()

        if len(save_path) == 0:
            return
        else:
            _download_url(url, save_path)

def _choose_url() -> str:
    print('Choose a URL to download (press Enter or Return to quit)')
    return input('URL: ').strip()


def _choose_save_path() -> str:
    print('Choose where you\'d like to save the file you download')
    return input('Path: ').strip()


def _download_url(url_to_download: str, file_path: str) -> None:
    response = None
    file_to_save = None

    try:
        response = urllib.request.urlopen(url_to_download)
        file_to_save = open(file_path, 'wb')
        file_to_save.write(response.read())

    except urllib.error.HTTPError as e:
        print('Failed to download contents of URL')
    print('Status code: {}'.format(e.code))
    print()

    finally:
        if file_to_save != None:
            file_to_save.close()

        if response != None:
        response.close()


if __name__ == '__main__':
    run_user_interface()

Выполнение программы на компьютере моего друга работает нормально. Однако, когда я выполняю его на своем компьютере, я получаю следующую ошибку.

Traceback (most recent call last):
File "C:\Users\garci\Desktop\ICS_32_Winter_2020\new_download_file.py", line 63, in <module>
run_user_interface()

  File "C:\Users\garci\Desktop\ICS_32_Winter_2020\new_download_file.py", line 20, in run_user_interface
_download_url(url, save_path)

  File "C:\Users\garci\Desktop\ICS_32_Winter_2020\new_download_file.py", line 40, in _download_url
file_to_save = open(file_path, 'wb')

PermissionError: [Errno 13] Permission denied: 'C:\\Users\\garci\\Desktop\\ICS_32_Winter_2020' 

Как я могу исправить эту ошибку разрешения? Спасибо.

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

Существует 3 причины, по которым это может происходить:

  • Файл используется во время записи. Чтобы обойти это, ЗАКРЫТЬ ФАЙЛ
  • Каталог, в который вы пишете, защищен от записи (крайне маловероятно), если вы не сделали это самостоятельно.
  • Недостаточно разрешений для предоставлено python для чтения / записи файлов. Чтобы преодолеть это, используйте Windows Key + X и затем нажмите A, что откроет приглашение cmd с привилегиями администратора. Измените каталог и попробуйте запустить скрипт.
0 голосов
/ 16 февраля 2020

Похоже, что вашей программе не разрешено писать в указанное c местоположение на вашем P C.

Измените разрешения для папки C:\Users\garci\Desktop\ICS_32_Winter_2020, и ваша программа должна нормально работать.

Простой способ сделать это (на Windows) - найти каталог в проводнике, щелкнуть правой кнопкой мыши по папке, выбрать Свойства , а затем открыть Безопасность таб. Оттуда вы можете изменить права на чтение / запись для папки.

...