2016-09-25 34 views
0

私は現在のディレクトリ内のすべての.xlsファイルと.xlsxファイルを元のファイル名を保持したまま.csvに変換するスクリプトをPython 2.7で作成しようとしています。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) 

私は2つの質問がある:

1)実行時のプログラムが1つのファイルのみを変換し、現在のディレクトリ内のすべてのファイルを反復処理しない理由を理解できません。

2)変換によって元のファイル名を保持する方法を理解できません。私。出力ファイルの名前が入力と同じであることを示します。

globpandasを使用することになり、あなたに

答えて

2

一つの可能​​な解決策をありがとうございました。

excel_files = glob('*xls*') 

for excel in excel_files: 
    out = excel.split('.')[0]+'.csv' 
    df = pd.read_excel(excel, 'Sheet1') 
    df.to_csv(out) 
関連する問題