2017-12-26 9 views
0

複数の.xlsファイルを1つの.csvファイルに変換しようとしていますので、後のスクリプトで使用できます。Pythonを使用してxlsファイルをcsvに変換して1つのファイルに保存する

私は他のStackOverflowのページにこのコードのほとんどが見つかりましたが、私は次のエラーを取得以下のコードを実行しようとしたとき:

エラー:

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' 

はコード:

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() 

を私はPython3を使用しています。コードの大部分はthisthisです。

答えて

0

あなたは

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

「WB」は「バイナリ書き込み」の略でバイナリモードでファイルを開きました。 このモードではバイナリデータの読み書きしかできません。 文字列を使用して書き込みたいので、 "wb"の代わりに "w"を使用して書き込みモードで開くことができます。

your_csv_file = open("file"+str(num)+".csv", "w") 
多少働い
+0

が、今、私は次のエラーを取得: トレースバック(最新の呼び出しの最後): wr.writerow(sh.row_values(ROWNUM)で ファイル "script_base_teste.py"、ライン13を、 ) ファイル "C:¥Users¥ycunhafe¥AppData¥Local¥Programs¥Python¥Python36-32¥lib¥encodings¥cp1252.py"、行19、エンコード return codecs.charmap_encode(input、self.errors、encoding_table )[0] UnicodeEncodeError: 'charmap'コーデックは685の文字 '\ ufeff'をエンコードできません:文字はにマップされます –

関連する問題