【问题标题】:python xlrd errors related to file extension changes与文件扩展名更改相关的 python xlrd 错误
【发布时间】: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 中的内容,即使数据源自其他地方,它也可以工作。

标签: python excel xlrd dta


【解决方案1】:

我认为文件开头有一个不可观察但存在的字节顺序标记。这个答案描述了如何删除它converting utf-16 -> utf-8 AND remove BOM>。

【讨论】:

  • 我不太确定如何使用此代码。 ``` with open(ff_name, 'rb') as source_file: with open(target_file_name, 'w+b') as dest_file: contents = source_file.read() dest_file.write(contents.decode('utf-16') .encode('utf-8')) ``` 我用我正在读取的文件替换了ff_name,用我正在写入的文件替换了target_file_name,并且代码执行了,但我仍然遇到错误.我用对了吗?
  • 最好将代码粘贴到您的答案中,以便我看到它。更重要的是粘贴错误消息。
猜你喜欢
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多