2016-09-25 8 views
0

Я пытаюсь написать сценарий в Python 2.7, который преобразует все файлы .xls и .xlsx в текущий каталог в .csv с сохранением их исходных имен файлов.Python: Преобразование нескольких файлов из xls в csv

С помощью других подобных вопросов здесь (к сожалению, не знаю, кто в кредит на куски кода я одолжил), вот что у меня до сих пор:

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) 

У меня есть два вопроса:

1) Я не могу понять, почему программа при запуске преобразует только один файл и не перебирает все файлы в текущем каталоге.

2) Я не могу понять, как сохранить исходное имя файла через преобразование. То есть что выходной файл имеет то же имя, что и вход.

Спасибо

ответ

2

Одно из возможных решений будет использовать glob и pandas.

excel_files = glob('*xls*') 

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