2017-12-28 24 views
0

In meinem Projekt schreibe ich dynamisch Stile in HTML-Datei. Ich habe vor kurzem von python2 bis 3. Nun wanderte es einen Fehler zu werfen, wie unten Protokoll angezeigt:TypeError: ein Byte-ähnliches Objekt wird benötigt, nicht 'str' python3

Code Snippet:

html_text = markdown(html_content, output_format='html4') 
    css = const.URL_SCHEME + "://" + request_host + '/static/css/pdf.css' 
    css = css.replace('\\', "/") 
    # HTML File Output 
    #print 'Started Html file generated' + const.CRUMBS_TIMESTAMP 
    html_file = open(os.getcwd() + const.MEDIA_UPLOADS + uploaded_file_name + '/output/' + 
        uploaded_file + '.html', "wb") 
    #print(html_file) 
    html_file.write('<style>') 
    html_file.write(urllib.request.urlopen(css).read()) 
    html_file.write('</style>') 

Fehlerprotokoll:

Quit the server with CTRL-BREAK. 
('Unexpected error:', <class 'TypeError'>) 
Traceback (most recent call last): 
    File "C:\Dev\EXE\crumbs_alteryx\alteryx\views.py", line 937, in parser 
    result_upload['filename']) 
    File "C:\Dev\EXE\crumbs_alteryx\alteryx\views.py", line 767, in generate_html 
    html_file.write('<style>') 
TypeError: a bytes-like object is required, not 'str' 
+0

ist Es ist, weil Sie Datei im Schreib Byte-Modus geöffnet haben. Was macht es mit Django? – Gahan

+0

Python 3 unterscheidet deutlich zwischen Bytestrings und Textstrings. Dies verhindert eine Menge schlampiger String-Handhabung, mit der Sie mit Python 2 durchkommen können. Es macht auch Unicode-Handhabung viel besser. Es mag auf den ersten Blick nervig sein, aber Sie werden sich bald daran gewöhnen und es schätzen lernen. –

Antwort

1

Wie wäre Ihre

Ändern
uploaded_file + '.html', "wb") 

bis

uploaded_file + '.html', "w") 

und dann müssen Sie Ihre Zeile unter

html_file.write(urllib.request.urlopen(css).read()) 

zu

html_file.write(urllib.request.urlopen(css).read().decode("utf-8")) 

konvertieren, da es derzeit Typenbyte

+0

Keine Änderung Herr @johnll –

+0

@SanuKyadav ich aktualisierte meine Antwort – johnII

+0

Danke Herr @johnll für Ihre wertvolle Antwort –

Verwandte Themen