2017-12-26 3 views
0

Ich versuche, mehrere .xls-Dateien in eine CSV-Datei zu konvertieren, so dass ich in einem späteren Skript verwenden kann.Verwenden von Python zum Konvertieren von Xls-Dateien in CSV und Speichern in einer Datei

fand ich die meisten dieser Code in anderen Stackoverflow-Seiten, aber wenn man versucht, den Code auszuführen unten ich die folgende Fehlermeldung erhalten:

Fehler:

Traceback (most recent call last): 
    File "script_base_teste.py", line 13, in <module> 
    wr.writerow(sh.row_values(rownum)) 
TypeError: a bytes-like object is required, not 'str' 

Code:

import xlrd 
import csv 


for num in range(1,4): 

    wb = xlrd.open_workbook("file"+str(num)+".xls") 
    sh = wb.sheet_by_name("Sheet 1") 
    your_csv_file = open("file"+str(num)+".csv", "wb") 
    wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL) 

    for rownum in range(0,sh.nrows): 
     wr.writerow(sh.row_values(rownum)) 

    your_csv_file.close() 




fout=open("result.csv","a") 
first file: 
for line in open("file1.csv"): 
    fout.write(line) 
now the rest:  
for num in range(2,3): 
    f = open("file"+str(num)+".csv") 
    f.next() # skip the header 
    for line in f: 
     fout.write(line) 
    f.close() 
fout.close() 

Ich benutze Python3 und ich habe den größten Teil des Codes von this und this

Antwort

0

Sie öffnete die Datei im Binärmodus

your_csv_file = open("file"+str(num)+".csv", "wb") 

Die „wb“ steht für „schreiben binäre“. In diesem Modus können nur binäre Daten gelesen/geschrieben werden. Da Sie mit Strings schreiben möchten, können Sie es im Schreibmodus mit "w" anstelle von "wb" öffnen.

your_csv_file = open("file"+str(num)+".csv", "w") 
+0

, die etwas gearbeitet, aber jetzt bekomme ich folgende Fehlermeldung: Traceback (jüngste Aufforderung zuletzt): File "script_base_teste.py", Zeile 13, in wr.writerow (sh.row_values ​​(rownum)) Datei "C: \ Benutzer \ Ycunhafe \ AppData \ Lokale \ Programme \ Python \ Python36-32 \ lib \ encodings \ cp1252.py", Zeile 19, in encode Rückgabecodecs.charmap_encode (Eingabe, self.errors, encoding_table) [0] UnicodeEncodeError: 'charmap' Codec kann das Zeichen '\ uffèf' nicht in Position 685 codieren: Zeichenkarten zu

Verwandte Themen