Продолжать получать файл не найден ошибка при открытии файла в двоичном файле записи - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь скопировать проект из Automation the Boring Stuff с Python, где вы загружаете каждый комикс XKCD, используя запросы.Он очень короткий, поэтому я просто наберу его здесь:

import requests, bs4,os
from pathlib import Path

os.makedirs('./XKCD', exist_ok= True)
path = os.path.abspath('./XKCD')

url = 'http://xkcd.com'

while not url.endswith('#'):
    print('downloading page %s...' % url)
    xkcdPage = requests.get(url)
    XKCDsoup = bs4.BeautifulSoup(xkcdPage.text,features="html.parser")
    picTags = XKCDsoup.select('img')
    #print (picTags)

    for tag in picTags:
        if 'title' in tag.attrs:
            webComic = requests.get('http:' + tag.attrs['src'])
            realTitle = tag.attrs['title'][:200]
            fileName = Path(os.path.join(path,realTitle))
           # fileName.touch(exist_ok = True)
            savedComic = open(os.path.join(path, realTitle),'wb')
            for chunk in webComic.iter_content(100000):
                savedComic.write(chunk)

    savedComic.close()

    prevTag = XKCDsoup.select('a[rel="prev"]')[0]
    url = 'http://xkcd.com' + prevTag.get('href')

В настоящее время у меня есть код, который находит URL-адрес изображения, загружает изображение и переходит на веб-страницу для предыдущего комикса.,Моя проблема в том, что моя программа проходит около 40 комиксов, а затем выплевывает

savedComic = open(os.path.join(path, realTitle),'wb')
FileNotFoundError: [Errno 2] No such file or directory:

Я не уверен, откуда это исходит.В моем понимании open (filename, wb) открывает файл по определенному пути и, если файл не существует, он создает его.Я искал ответ на этот вопрос, и у меня появилось несколько вариантов:

  • Неправильные разрешения на чтение / запись для папки.Это не имеет смысла, потому что я уже могу записать более 30 файлов в папку

  • Путь к файлу неверен.Опять же, это не имеет смысла, потому что я могу записать другие файлы в папку, и я переписал код для использования abspath вместо использования относительного пути.

  • Я используюнеправильная функция для открытия файлов.Как вы можете видеть, я проверил другие ответы на stackexchange и попытался fileName.touch () создать файл, если он не существует.

Честно говоря, я не уверен в этомточка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...