Исправлена ​​проблема с записью двоичных данных в файл: «файл не в кодировке UTF-8» - PullRequest
0 голосов
/ 05 июля 2019

Я хочу скопировать содержимое файла с веб-страницы в локальный файл, открыв онлайн-файл с помощью запросов, а затем скопировав все содержимое моих запросов в мой локальный файл.

Проблема заключается в том, что всеЯ получаю в свой локальный файл жалобу на то, что файл не в кодировке UTF-8.

Мне нужно создать файл перед записью в него, поэтому я попытался открыть и закрыть файл до сих пор.для написания текста и его кодирования следующим образом: f = open (path, 'w', encoding = 'UTF-8') f.close () Это не сработало.

import requests
from bs4 import BeautifulSoup as soup
for i in range(3586, 9003, 95):
    print(i)
    #Get the link
    gal_links = requests.get(url + str(i))

    if not (gal_links.status_code == 200):
        print('DNE: ' + str(gal_links.status_code))

    else:
        scraper = soup(gal_links.text)
        href = scraper.find_all('a')
        #choose a random link starting after the 7th, and ending at nth - 2
        rand = randint(7, len(href)-2)
        star_link = href[rand]['href']
        file_url = url + str(i) + '/' + star_link
        print(file_url)

        #get the .fits file
        req = requests.get(file_url)


        path = '/Users/TheBestKid/Desktop/Hubble/fits/' + str(i) + '_' + str(rand) + '.fits'

        #write binary to local file
        #This is where I tried opening and closing the file for reading
        with open(path, 'wb+') as file:
            file.write(req.content)

Я ожидаюфайл, представляющий собой кучу слов, как и любой другой файл, открытый в двоичном виде;однако вместо этого он просто содержит следующее сообщение:

Error! 'File_Name' is not UTF-8 encoded
Saving disabled
See console for more details

Вывод на консоль выглядит следующим образом:

[W 01:10:00.905 NotebookApp] 
/Users/TheBestKid/Desktop/Hubble/fits/3586_539.fits is not UTF-8 
encoded
[W 01:10:00.905 NotebookApp] 400 GET 
/api/contents/fits/3586_539.fits? 
type=file&format=text&_=1562310600681 (::1) 1.45ms 
referer=http://localhost:8889/edit/fits/3586_539.fits

1 Ответ

1 голос
/ 05 июля 2019

Вы должны сделать это при сохранении файла

file.write(req.content.encode("utf-8"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...