def replace_excel(path, f): """ 将 Excel .xls 后缀 改成 .xlsx 后缀,并去除特殊符号和非法字符 path: 文件夹路径 f: 文件名字,带后缀,例如 aa.xls """ file_name_be, suff = os.path.splitext(f) # 路径进行分割,分别为文件路径和文件后缀 if suff == '.xls': # 读取 xls 文件 data = pd.DataFrame(pd.read_excel(path + '\\' + f)) # 替换特殊符号和非法字符 data = data.applymap(lambda x: re.sub(r'[\000-\010]|[\013-\014]|[\016-\037]', '', str(x))) # 格式转换 data.to_excel(path + '\\' + file_name_be + '.xlsx', index=False) return file_name_be + '.xlsx'优化这个代码,是把指定文件里面所有的xls文件转换到指定一个文件夹里面,形式要xlsx
时间: 2024-03-19 17:45:20 浏览: 217
readxl:将excel文件(.xls和.xlsx)读入R:linked_paperclips:
可以使用os模块的walk函数,递归遍历指定文件夹下的所有xls文件,并将其转换为xlsx格式并保存到指定的输出文件夹中。以下是优化后的代码:
```python
import os
import re
import pandas as pd
def replace_excel(input_path, output_path):
# 遍历指定文件夹下的所有文件和子文件夹
for root, dirs, files in os.walk(input_path):
for f in files:
file_name_be, suff = os.path.splitext(f)
if suff == '.xls':
# 读取 xls 文件
data = pd.DataFrame(pd.read_excel(os.path.join(root, f)))
# 替换特殊符号和非法字符
data = data.applymap(lambda x: re.sub(r'[\000-\010]|[\013-\014]|[\016-\037]', '', str(x)))
# 格式转换并保存
xlsx_file_path = os.path.join(output_path, file_name_be + '.xlsx')
data.to_excel(xlsx_file_path, index=False)
print('已将{}文件转换为xlsx格式并保存至{}'.format(f, xlsx_file_path))
```
在上面的代码中,我们使用了os模块的walk函数来递归遍历指定的文件夹。对于每个xls文件,我们读取它的数据并进行特殊符号和非法字符的替换,然后将其转换为xlsx格式并保存到指定的输出文件夹中。如果转换成功,就会打印出转换后的文件路径。
阅读全文