我有一些适用于 xls 文件的代码。它适用于我扔给它的所有东西,除了这个文件,我不知道如何正确识别这个文件是什么。我从使用 Selenium 导航的网站上获取文件。此特定电子表格始终作为导致此错误的文件类型下载。
完整的错误是:
Traceback (most recent call last):
File "/Users/Meir/Documents/PYTHON/IFG User Update/code/ifg_TPA_update_excel.py", line 44, in <module>
rb = open_workbook((os.path.expanduser("~/Documents/PYTHON/Selenium test/TPA_Example.xls")),formatting_info=True)
File "/usr/local/lib/python2.7/site-packages/xlrd/__init__.py", line 443, in open_workbook
ragged_rows=ragged_rows,
File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 94, in open_workbook_xls
biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 1262, in getbof
bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 1256, in bof_error
raise XLRDError('Unsupported format, or corrupt file: ' + msg)
XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xff\xfe<\x00S\x00T\x00'
我试图打开的文件在我的 finder 中显示为 xls 文件。但是,当我打开它时,它不会以文件名作为标题打开,而是显示“Workbook1”。当我点击保存时,它会打开保存菜单,就像我点击了另存为一样,默认为“Workbook1.xlsx”。我尝试更改我的代码以将其作为 xlsx 文件打开,但随后错误提示找不到该文件。每当我尝试用谷歌搜索它时,我都不知道如何表达它以获得相关答案。
当我联系网站支持团队询问 TPA 批量操作表是哪种文件时,他们回答说:
TPA 批量操作是比其他批量操作更旧的版本,它将于今年晚些时候重建。下载文件时,最好的办法是另存为并将其另存为旧版本的 .xls,我通常选择 Microsoft Excel 5.0/95 工作簿,并将其格式化为文本。以这种方式格式化,它应该可以毫无问题地上传。
关于如何从 Python 中打开它的任何想法?
目前,我将每个部分构建为单独的代码,一旦整理好,我将把它们组合在一起。以下是将打开文件并遇到错误的代码部分。
我的代码:
#!/usr/bin/env python
## Import OS and Modules
import os
import csv
import xlrd
import xlwt
import xlutils
import csv
import collections
## Define Input File from IFG
ifg_user_file = "New_PCs_to_set_up_in_marketing_database_-_4-11-2013.csv"
## Import data
data = [row for row in csv.reader(open (os.path.expanduser("~/Downloads/" + ifg_user_file),'U'))]
## Find number of rows
row_count = sum(1 for row in data)
print row_count
## Set to turn off when reaching the end of data
end_of_data = False
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt
##################################################################################
## THE ERROR OCCURS AT THE LINE BELOW
rb = open_workbook((os.path.expanduser("~/Documents/PYTHON/Selenium test/TPA_Example.xls")),formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file
编辑:我试图用编解码器打开它而不是打开诊断
rb=codecs.open((os.path.expanduser("~/Documents/PYTHON/Selenium test/TPA_Example.xls")), 'r', encoding='utf16');
print rb;
print rb.readline();
print rb.read(20);
它打印了以下结果:
<open file '/Users/Meir/Documents/PYTHON/Selenium test/TPA_Example.xls', mode 'rb' at 0x110fe51e0>
<STYLE>
.excel { BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px so
看起来它是一个excel文档。不知道如何进行。是否有通用的打开excel文档命令?