2016-09-25 3 views
0

Ich versuche ein Skript in Python 2.7 zu schreiben, das alle .xls- und .xlsx-Dateien im aktuellen Verzeichnis in .csv unter Beibehaltung ihrer ursprünglichen Dateinamen konvertieren würde.Python: Konvertieren mehrerer Dateien von xls nach csv

Mit Hilfe von anderen ähnlichen Fragen hier (leider nicht sicher, wer für die Teile des Codes Ich lieh zu Krediten), hier ist was ich bisher habe:

import xlrd 
import csv 
import os 

def csv_from_excel(xlfile): 
    wb = xlrd.open_workbook(xlfile) 
    sh = wb.sheet_by_index(0) 
    your_csv_file = open(os.path.splitext(sxlfile)[0], 'wb') 
    wr = csv.writer(your_csv_file, dialect='excel', quoting=csv.QUOTE_ALL) 
    for rownum in xrange(sh.nrows): 
     wr.writerow(sh.row_values(rownum)) 
    your_csv_file.close() 

for file in os.listdir(os.getcwd()): 
     if file.lower().endswith(('.xls','.xlsx')): 
     csv_from_excel(file) 

Ich habe zwei Fragen:

1) Ich kann nicht herausfinden, warum das Programm beim Ausführen nur eine Datei konvertiert und nicht alle Dateien im aktuellen Verzeichnis durchläuft.

2) Ich kann nicht herausfinden, wie man den ursprünglichen Dateinamen durch die Umwandlung behält. I.e. dass eine Ausgabedatei denselben Namen wie eine Eingabe hat.

Danke

Antwort

2

Eine mögliche Lösung glob und pandas Verwendung wäre.

excel_files = glob('*xls*') 

for excel in excel_files: 
    out = excel.split('.')[0]+'.csv' 
    df = pd.read_excel(excel, 'Sheet1') 
    df.to_csv(out) 
Verwandte Themen