2016-09-25 127 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

一个可能的解决办法是使用globpandas

excel_files = glob('*xls*') 

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