2016-09-25 124 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)