_csv错误:字段大于字段限制(131072)不能解决我的问题。
我有一个脚本,将CSV文件处理成Excel报告。脚本工作得很好,直到一些特定的CSV文件变得相当大(目前
该脚本通常在Windows 7 64位上运行,因为团队使用的是Windows客户端。Python版本范围从3.6到3.7.2-都是64位。所有版本都会产生错误。
我得到第一名的错误是
_csv错误:字段大于字段限制(131072)
使用搜索功能,似乎很容易解决。但是当我包括
CSV.field_size_limit(s. max size)
这只会让事情变得更糟:
Traceback (most recent call last):
File "CSV-to-Excel.py", line 123, in <module>
report = process_csv_report(infile)
File "CSV-to-Excel.py", line 30, in process_csv_report
csv.field_size_limit(sys.maxsize)
OverflowError: Python int too large to convert to C long
根据我的研究,bug应该早就修好了。
我目前的解决方法是使用代码工作正常的Linux。然而,应该运行脚本的团队不能运行Linux而是被锁定在视窗上。
脚本的代码是
#!c:\python37\python.exe
import csv
import sys
def process_csv_report(CSV_report_file):
files = []
files.append(CSV_report_file+"_low.csv")
files.append(CSV_report_file+"_med.csv")
files.append(CSV_report_file+"_high.csv")
first = True
try:
report = []
for f in files:
if first == True:
with open(f, "r", newline='', encoding='utf-8') as csvfile:
original = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in original:
report.append(row)
first = False
else:
with open(f, "r", newline='', encoding='utf-8') as csvfile:
original = csv.reader(csvfile, delimiter=',', quotechar='"')
# for the second and third file skip the header line
next(original, None)
for row in original:
report.append(row)
except Exception as e:
print("File I/O error! File: {}; Error: {}".format(f, str(e)))
exit(1)
return report
if __name__ == "__main__":
report = process_csv_report(infile)
看起来很简单,我迷失在解决这个问题上,因为为他人工作的解决方案在这里无缘无故地失败了。
最近有人看到这种情况发生在Python的最新版本上吗?
您可以将sys. maxsize
替换为c整数max值,即2147483647
。
我知道sys. maxsize
应该处理它,但我认为使用低于该屋顶的值,例如1.000.000
应该可以解决您的问题。
更好的方法可能是min(sys. maxsize,2147483646)
_csv
库是一个编译的扩展,然后它使用c变量。