python pandas 读取excel格式文件出现问题

使用pandas报错如下

img


文件格式是rec结尾文件,可直接改后缀为xls打开,正常读取数据,文件如下

img


代码如下,请各位帮帮忙,如何才能用pandas将文件读出

import pandas as pd

# path = 'E:\\8k飞参数据.csv'
path = 'E:\\14主减试车数据_2021-1-4-16-18.rec'
# csv_data = pd.read_csv(path, encoding='GBK', header=0)
csv_data = pd.read_excel(path)
k = 0
for i in csv_data.values:
    print(i)
    k += 1
    if k > 10:
        break

经过测试,发现文件可以直接用记事本打开,打开后格式如下

img

查看文件头,发现文件没有文件头,直接是可以用的数据

img

感谢各位的支持,现在我将样本文件链接放在这里,可以先试试

文件路径字符串前面加个r,文件格式改成表格

用的read_excel 文件就应该是excel格式的,rec是什么内容

文件格式就不是Excel的,你用pd.read_excel当然没有用了。我特意把Excel文件扩展名改成.rec读取都没问题。你不能确定就文件头判断下文件类型。

这个不是excel格式的文件,你改了后缀之后,excel程序能读出来,只不过说明excel的兼容性强大而已。
按tab键隔开的文本文件去读取。参考下面的代码:


import pandas as pd

# path = 'E:\\8k飞参数据.csv'
path = '~/sandbox/tmp/data.rec'
# csv_data = pd.read_csv(path, encoding='GBK', header=0)
csv_data = pd.read_csv(path, delimiter='\t')
k = 0
for i in csv_data.values:
    print(i)
    k += 1
    if k > 10:
        break

可以提供一份 rec 格式的文件么,我下载了你的xls文件用wps打开然后另存为后是可以读取的的

  1. 打开14主减试车数据_2021-1-4-16-18.xls,另存为14主减试车数据_2021-1-4-16-18_2.xls
  2. 用代码读取14主减试车数据_2021-1-4-16-18_2.xls
import pandas as pd
import xlrd

file1 = '14主减试车数据_2021-1-4-16-18.xls'
file2 = '14主减试车数据_2021-1-4-16-18_2.xls'


df = pd.read_excel(file2)
print(df)

img

经过几天的折磨,也感谢各位码友的帮助,最终我还是自己用pandas读取出来了,过程是下面的,用读取文本的方式,按行读取出rec文件的内容,在用分割"'\t'"的方法来分割字符串后写入excel,最后用pandas打开,操作代码如下
读取文件,写入excel,保存后返回路径

def rec_exl(filename):
    # 获取临时文件名并改为excel格式后缀
    name = filename.split(':\\')[-1].split('.')[0] + '.xls'
    try:
        f = open(filename, 'r', encoding='GBK')
        xls = xlwt.Workbook()
        sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)
        x = 0
        line = f.readline()
        # 按行循环,读取文本文件
        while line:
            tempdata=line.split('\t')
            for i in range(len(tempdata)):
                item = tempdata[i]
                # 去除空格换行
                item = item.strip()
                item = item.replace("\n", "")

                try:
                    # 转换为浮点数
                    item = float(item)
                except Exception as e:
                    pass
                sheet.write(x, i, item)
            x += 1
            line = f.readline()
        f.close()
        # 拼接零时文件路径
        path = os.getcwd() + '\\' + name
        # 保存xls文件
        xls.save(path)
        # 返回路径
        return path
    except Exception as e:
        return None

pandas获取路径,读取文件,使用后删除

#异步读取文件操作
@shared_task
def readrec(path):
    exlpath = rec_exl(path)
    exlobj=pd.read_excel(exlpath)
    print(exlobj)
    time.sleep(5)
    os.remove(exlpath)


最后,再次感谢各位的帮助