【发布时间】:2015-11-14 05:46:28
【问题描述】:
好的,我正在阅读一份 Excel 工作簿。我读了一段时间文件,它在调试并在代码下方执行其他操作后从 .csv 开始,我向您展示它已更改为 xlsx 我开始收到 IOError 没有这样的文件或目录。我弄清楚了原因并将 FFA.csv 更改为 FFA.xlsx,它可以正常工作。然后我开始做其他事情和调试。今天早上起床,现在我收到以下错误:行包含 NULL 字节。很奇怪,因为代码开始时很好。现在无法读取。我放入 print repr() 进行调试,它实际上现在打印 NULL 字节。那么我该如何解决这个问题并在将来防止它呢?这是第一个 200 字节:
PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00b\xee\x9dh^\x01\x00\x00\x90\x04\x00\x00\x13\x00\x08\x02[Content_Types].xml \xa2\x04\x02(\xa0\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
import csv
def readFile():
count = 0
print repr(open("FFA.xlsx", "rb").read(200)) #dump 1st 200 bytes
with open("FFA.xlsx","rb") as csvfile:
FFAreader = csv.reader(csvfile, delimiter=",")
for row in FFAreader:
idd = row[0]
name = row[1]
pos = row[2]
team = row[3]
pts = row[4]
oecr = row[5]
oR = row[6]
posR = row[7]
up = row[8]
low =row[9]
risk = row[10]
swing = row[11]
readFile()
【问题讨论】:
-
呃,.xlsx 不是 csv 文件。它是一个包含多个 xml 和其他文件的 zip 文件。你正在阅读二进制垃圾。
-
好吧,就像我说的,我只是改变了它,因为它似乎会改变自己,但它在一段时间内工作正常。我将其改回 .csv 但仍然收到错误消息。但是前 200 个字节已更改为
-
这是现在的前 200 个字节 'playerId,playername,position,team,points,overallECR,overallRank,positionRank,upper,lower,risk,swing\r\n100029,49ers,DST,SF, 104.896,245,979,16,165.7802,92.0755,4.0319,73.7047\r\n2543501,Aaron Colvin,DB,JAC'
-
将文件导出为 CSV,然后处理 CSV 文件。
-
作为附加建议,您应该在 main 的常规块之后调用 readFile() 方法:` if name == 'main': readFile() `
标签: excel python-2.7 csv null byte