我试图在Python 2.7中编写一个脚本,它将当前目录中的所有.xls和.xlsx文件转换为.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)我无法弄清楚如何通过转换保留原始文件名。即输出文件与输入名称相同。
谢谢
答案 0 :(得分:3)
一种可能的解决方案是使用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)