satoshi1029 发表于 2022-12-10 16:40:44

拆分excel的代码打不开csv文件,求助

代码如下,可以正常打开xlsx文件,但是打开csv文件就报下面的错误,求解:
from tkinter import filedialog
import pandas as pd
import xlrd
    #xlrd 1.2.0版本

def main():
    path = filedialog.askopenfilename().replace('/', '\\')
    first_file_fh=xlrd.open_workbook(path)
    # 选择要拆分的文件
    first_file_sheet=first_file_fh.sheets()
    # 获取sheet名
    sheet_names=[]
    for sheetname in first_file_sheet:
      sheet_names.append(sheetname.name)
      print('正在读取表格数据...')
    df = pd.read_excel(path, sheet_name=sheet_names)
    # 读取要拆分的sheet

    setdata = input('请输入要拆分列的名称:')
    print('正在拆分地址请稍等....')
    list_c = df.unique()
    # 获取要拆分列的内容
    for c in list_c:
      # 根据列的内容循环读取
      df2=df==c]
      # 根据列的内容进行筛选
      df2.to_csv('./拆分结果/'+c+'.csv', encoding='gbk',index=None)
      #df2.to_csv('./excel_csv/auto_ok/'+c+'.csv', encoding='gbk',index=None)
      # 筛选后的内容保存为CSV

if __name__ == '__main__':
    main()

print('拆分完成')



报错误如下:

Traceback (most recent call last):
File "e:\dizhi\chaifen.py", line 32, in <module>
    main()
File "e:\dizhi\chaifen.py", line 8, in main
    first_file_fh=xlrd.open_workbook(path)
File "D:\Program Files (x86)\Python310\lib\site-packages\xlrd\__init__.py", line 148, in open_workbook
    bk = book.open_workbook_xls(
File "D:\Program Files (x86)\Python310\lib\site-packages\xlrd\book.py", line 92, in open_workbook_xls
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
File "D:\Program Files (x86)\Python310\lib\site-packages\xlrd\book.py", line 1278, in getbof
    bof_error('Expected BOF record; found %r' % self.mem)
File "D:\Program Files (x86)\Python310\lib\site-packages\xlrd\book.py", line 1272, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'\xcb\xf9\xca\xf4\xce\xe5\xbc\xb6'


请大佬解惑。

阿奇_o 发表于 2022-12-10 17:44:33

本帖最后由 阿奇_o 于 2022-12-10 17:47 编辑

xlsx文件和csv文件,不是同一类东西!!—— 请自个去官网看看 xlrd 支不支持 csv?   

我盲猜是不支持的。(而且xlrd早起版本应该是连xlsx都不支持,只支持对 xls 的读取 )

csv 本质是一个文本文件,可以用 csv模块,或 pandas.read_csv(),甚至 自己with open() 自己解析一下都可以。

satoshi1029 发表于 2022-12-10 23:43:20

用pandas.read_csv已解决,谢谢
页: [1]
查看完整版本: 拆分excel的代码打不开csv文件,求助