【发布时间】:2014-02-10 23:51:02
【问题描述】:
我正在尝试使用xlrd 库来组织大量的.DTA 文件。
我发现的第一件事是,只需更改扩展名 .xls 并在 excel 中打开它们,就可以将 .DTA 文件导出为 excel 文件。当您打开它时会发出警告,它会给出有关文件可能已损坏的错误,但否则会正常打开。
the file you are trying to open is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?
然而,在 python 中,当我尝试打开文件时,我得到的只是一个没有有用信息的错误,我很确定这是由文件扩展名问题引起的。
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1323, in getbof
raise XLRDError('Expected BOF record; found 0x%04x' % opcode)
XLRDError: Expected BOF record; found 0x5845
我尝试了我的代码,将数据剪切并粘贴到一个新的 excel 文件中,并将其命名为相同的东西,它确实有效,所以我很确定这是问题所在,但我有太多文件无法执行这对每个人来说都是单独的。
有没有更好的方法来解决这个问题?以某种方式抑制错误或实际更改文件类型而不仅仅是其扩展名?
【问题讨论】:
-
你能不能用文本编辑器打开文件,删除所有内容,直到可见的第一个字符用不同的名称保存文件,然后用 Excel 重新打开它,如果没有收到警告,用 Python 打开。我们遇到了这个问题,如果我记得问题的名称,我会写一个答案,但实际上只是使用读取打开并获取除第一个字符之外的所有字符 mystring = open(file).read(), mystring = mystring[1:]
-
我有数百个文件要排序,不能手动更改。
-
只要做一个确认是否是这种情况,如果它正在更改文件将很容易 - 仔细阅读我的评论
-
该文件确实从一个字符立即开始,但我已经尝试(手动)将它放入一个新文件并将其保存为一个新文件,这修复了错误。将其命名为相同的东西也解决了这个问题。基本上,只要文件源自 excel 中的内容,即使数据源自其他地方,它也可以工作。