天道酬勤,学无止境

如何修复python 3中超出预期的大小(How to fix size exceeds expected in python 3)

问题

我正在尝试使用 python pandas循环遍历 Excel 文件。 首先我将它们保存到 csv,然后我再次打开它们,切片然后再次保存它们。 但我收到一个错误:

"Workbook: size exceeds expected 10752 bytes; corrupt?"

我对python比较陌生。

回答1

我可以通过在 Excel 中打开有问题的 Excel 文件并简单地保存它来修复这个确切的错误。

之后,我可以在 Pandas 中导入文件而不会出错。

就我而言,我怀疑此错误是由于 Windows(生成我的源文件的地方)和 Mac OS(我导入文件的地方)之间的 Excel 平台不一致造成的。

回答2

我认为您的单元格中可能有超过 255 个字符。

请参阅有关数据和文件大小限制的文章:http://kb.tableau.com/articles/knowledgebase/jet-data-file-size-limitations

回答3

考虑使用 openpyxl 打开 Excel 文件。

似乎熊猫使用 xlrd 来读取 excel 文件,如果感觉读取文件有问题, xlrd会引发错误......这就是你发生的事情。

xlrd 2020 年 1 月起不再维护xlrd

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Python Quicksort 运行时错误:在 cmp 中超出了最大递归深度(Python Quicksort Runtime Error: Maximum Recursion Depth Exceeded in cmp)
    问题 我正在编写一个程序,它将读取一个包含 5,163 个名字的文本文件。 (文本文件可以在这里看到) 然后我想将名称存储到一个名为“名称”的列表中,之后,我根据名称包含的字母数对列表进行排序,较短的名称在列表的开头,较长的在结尾。 我使用快速排序对列表进行排序,但是当我运行它时,它显示了这个错误: C:\Python27\python.exe C:/Users/Lenovo/Desktop/Anagrams/Main.py Traceback (most recent call last): File "C:/Users/Lenovo/Desktop/Anagrams/Main.py", line 25, in <module> names = quicksort(names) File "C:/Users/Lenovo/Desktop/Anagrams/Main.py", line 8, in quicksort greater = quicksort([x for x in list[1:] if not lessThan(x, pivot)]) File "C:/Users/Lenovo/Desktop/Anagrams/Main.py", line 7, in quicksort lesser = quicksort([x for x in list[1:] if
  • 线程“ main”中的异常java.lang.OutOfMemoryError:GWT应用程序中超出了GC开销限制(Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded in GWT application)
    问题 我正在使用GWT和GAE开发应用程序。 当我尝试重建它或创建工件时,我收到很多错误,如下图所示。 我搜索了谷歌和堆栈溢出,我得到了一些答案,但没有解决我的特殊问题。 据我了解,我收到错误消息是因为我的垃圾收集器消耗了大量内存。 这是主要错误Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded 。 回答1 好,我解决了这个问题。 只需增加虚拟机编译项目所需的内存即可。 以前是128,现在更改为512。随着项目的增长,它需要更多的内存来编译项目的类。以下是在Injtellj IDEA中执行此操作的方法。 右键单击项目模块->打开模块设置->模块-> GWT->编译器最大堆大小(Mb)->更改为512。 注意:在Ideal Intellij 12+中,项目设置位于:文件->项目结构或Ctrl + Alrt + Shitf + S 回答2 我遇到了同样的问题 Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded 当我尝试修复此错误时,它显示了相同的错误。 因此,不要着急,只需在“运行”->“运行配置”->“单击参数”->“内部VM参数类型”中设置此选项,即可增加大小
  • 如何在 C 中为我的应用程序修复内存大小?(how to fix a memory size for my application in C?)
    问题 我想为我的应用程序分配一个固定内存(使用 C 开发)。 说我的应用程序不应该超过 64MB 的内存占用。 而且我应该避免使用更多的 CPU 使用率。 怎么可能? 问候马塞尔。 回答1 在 unix 下:“ulimit -d 64M” 回答2 我可以确保不会在您的应用程序中超过最大内存阈值的一种相当低技术的方法是定义您自己的特殊malloc()函数,该函数记录分配了多少内存,并在阈值时返回一个 NULL 指针已经超过。 这当然取决于您每次调用malloc()时检查它的返回值,这通常被认为是一种很好的做法,因为不能保证malloc()会找到您请求的大小的连续内存块. 但这并不是万无一失的,因为它可能不会考虑字对齐的内存填充,因此您可能最终会在函数报告您已经达到它之前很久就达到了 64MB 内存限制。 此外,假设您使用的是 Win32,可能有一些 API 可用于获取当前进程大小并在您的自定义malloc()函数中进行检查。 请记住,将这种检查开销添加到您的代码中很可能会导致它使用更多的 CPU 并且运行速度比正常情况慢很多,这很好地引出了您的下一个问题:) 而且我应该避免使用更多的 CPU 使用率。 这是一个非常普遍的问题,没有简单的答案。 你可以编写两个不同的程序,它们基本上做同样的事情,由于所使用的算法,一个程序的 CPU 密集度可能是另一个程序的 100 倍。 最好的技术是:
  • 错误“SQL 语句中超出最大字符数编辑:问题显示表(Error "Maximum Characters Exceeded in SQL Statement EDIT: Issue Displaying Table)
    问题 感谢您的帮助。 我是 SQL 编程的新手(因为这是我的第一个任务),我完全不明白为什么这不起作用。 我的目标只是把它做成一个简单的表格。 我被要求使用 sqlcourse.com 的 SWL 解释器,当我输入程序时,我收到错误“SQL 语句中超出了最大字符数”。 每次我检查我的陈述时,我都会错过错误所在。 请帮忙? 我的声明: create table Marchetta1 (CustomerNum number(15), CustomerName char(15), Street varchar(15), City char(15), State char(2), Zip number(5), Balance number (8,2), CreditLimit number (8,2), RepNum varchar (5)); insert into Marchetta1 (CustomerNum, CustomerName, Street, City, State, Zip, Balance, CreditLimit, RepNum) values ('123', 'Bob Smith', '8215 Cherry St', 'Grove', 'FL', '33331', '500.23', '1000', 'FP123'); insert into
  • 如何修复“超出了最大调用堆栈大小” AngularJS(How can I fix 'Maximum call stack size exceeded' AngularJS)
    问题 我正在使用AngularJs和Ui-Router,并且试图设置两个不同的主页,一个用于已登录的用户,另一个用于未登录的用户。 但是我收到以下错误: RangeError: Maximum call stack size exceeded 我运行console.trace() ,我发现有一个问题导致状态无限循环(或类似的循环)。 但是我不知道如何解决它。 这是生成错误的代码。 .run(function ($rootScope, $state, $location, Auth) { $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState) { if(fromState.name === "") { if (Auth.isLoggedIn()) { $state.go('main'); event.preventDefault(); } else { $state.go('welcome'); event.preventDefault(); } } else { if (toState.authenticate && !Auth.isLoggedIn()) { $location.path('/login'); event.preventDefault(); } } })
  • 如何修复YAML语法错误:在解析块时未找到预期的“-”指示符?(How to fix the YAML syntax error: did not find expected '-' indicator while parsing a block?)
    问题 我在.travis.yml为Python库编写了一些代码。 使用lint.travis-ci.org,我知道我的YAML文件中存在一些缩进问题。 这是错误所指向的部分 install: - if [[ "${TEST_PY3}" == "false" ]]; then pip install Cython; python setup.py build; # To build networkx-metis mkdir core; # For the installation of networkx core cd core; git clone https://github.com/orkohunter/networkx.git; cd networkx/; git checkout addons; python setup.py install; cd ..; fi 我哪里错了? 错误说 syntax error: (<unknown>): did not find expected '-' indicator while parsing a block collection at line 32 column 3 如果有像autopep8这样的工具可以修复YAML文件的缩进, autopep8了。 回答1 您的文件中没有32行(可能是因为您从示例中删除了非必要数据)
  • 比较中超过了最大递归深度(maximum recursion depth exceeded in comparison)
    问题 我写了这段代码来计算组合的数量: def fact(n): return 1 if(n == 1) else n * fact(n - 1) def combinations(n,k): return fact(n)/((fact(n - k) * fact(k))) while(True): print(combinations(int(input()), int(input()))) 阶乘函数似乎可以正常工作。 但是,当我尝试找到两个数字的组合时,为什么在比较错误中却给了我最大的递归深度? 阶乘函数有问题吗,因为那似乎是错误的根源? 这是我得到的错误: builtins.RuntimeError:比较中超出了最大递归深度 回答1 尝试更换: def fact(n): return 1 if(n == 1) else n * fact(n - 1) 至: def fact(n): return 1 if(n <= 1) else n * fact(n - 1) 因为如果传递两个相同的数字,则将尝试计算fact(0) (将调用fact(-1)和fact(-2)等,直到达到最大递归深度错误为止)。 回答2 您应该尝试避免使用诸如数字的阶乘之类的简单函数进行递归。 递归确实很强大,但有时会无缘无故地被滥用。 这是阶乘函数的迭代版本的代码: def fact(n): result
  • 在Jupyter笔记本中超过IOPub数据速率(查看图像时)(IOPub data rate exceeded in Jupyter notebook (when viewing image))
    问题 我想在Jupyter笔记本中查看图像。 这是一个9.9MB的.png文件。 from IPython.display import Image Image(filename='path_to_image/image.png') 我收到以下错误: IOPub data rate exceeded. The notebook server will temporarily stop sending output to the client in order to avoid crashing it. 有点意外,其他地方也有报道。 这是预期的吗,有没有简单的解决方案? (错误消息建议在--NotebookApp.iopub_data_rate_limit更改限制。) 回答1 尝试这个: jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10 或这个: yourTerminal:prompt> jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10 回答2 我使用networkx和bokeh遇到了这个问题 这在Windows 7中适用于我(从此处获取): 要创建jupyter_notebook_config.py文件,并注释掉所有默认设置,可以使用以下命令行
  • 我收到一个IndentationError。 我如何解决它?(I'm getting an IndentationError. How do I fix it?)
    问题 我有一个Python脚本: if True: if False: print('foo') print('bar') 但是,当我尝试运行脚本时,Python引发IndentationError : File "script.py", line 4 print('bar') ^ IndentationError: unindent does not match any outer indentation level 我一直在玩我的程序,并且还能够产生其他三个错误: IndentationError: unexpected indent IndentationError: expected an indented block TabError: inconsistent use of tabs and spaces in indentation 这些错误是什么意思? 我究竟做错了什么? 如何修复我的代码? 回答1 缩进为何重要? 在Python中,缩进用于分隔代码块。 这与许多其他使用大括号{}来分隔块(例如Java,Javascript和C)的语言不同。因此,Python用户必须密切注意缩进代码的时间和方式,因为空格很重要。 当Python遇到程序缩进问题时,它会引发一个称为IndentationError或TabError的异常。 一点历史 Python的创建者Guido
  • 如何捕获“超出最大调用堆栈大小”错误?(how to catch a “Maximum call stack size exceeded” error?)
    问题 try { requestAnimationFrame(function re(){ re(); })} catch (e){ console.log(e); } 我在控制台中尝试了上面的代码,它没有按预期工作。 在我看来,虽然 requestAnimationFrame(function re(){ re(); })} 最终会触发一个错误, try抛出的不是动画的 id。 如何捕获这样的“超出最大调用堆栈大小”错误? 回答1 关于捕获最大堆栈大小超出错误的事情是我不确定它是如何工作的。 浏览器可以做的唯一一件事就是清空堆栈,然后运行下一个函数是 catch 函数,但在这一点上(我认为浏览器甚至无法做到这一点)你会没有迹象表明您的代码在哪里损坏,因此您尝试运行的任何内容充其量都将是严重的错误。 另一个问题(这可能就是没有浏览器具有此功能的原因)是因为您在错误后运行的大多数功能只会尝试以某种方式重新启动正常的 Web 功能。 因为你不知道是什么坏了,所以你不能阻止它再次发生,所以你最终会一次又一次地崩溃。 这会让用户和浏览器对您的网页感到愤怒。 所以我想最好的办法是确保你的代码没有无限循环并且能够顺利运行 在这个问题的答案中可以找到对堆栈大小及其工作原理的很好的描述 回答2 可以像任何其他错误一样捕获最大调用堆栈大小超出错误: try { function recur() {
  • 如何修复此python错误? RuntimeError:词典在迭代过程中更改了大小(How to fix this python error? RuntimeError: dictionary changed size during iteration)
    问题 它给了我这个错误: Exception in thread Thread-163: Traceback (most recent call last): File "C:\Python26\lib\threading.py", line 532, in __bootstrap_inner self.run() File "C:\Python26\lib\threading.py", line 736, in run self.function(*self.args, **self.kwargs) File "C:\Users\Public\SoundLog\Code\Código Python\SoundLog\SoundLog.py", line 337, in getInfo self.data1 = copy.deepcopy(Auxiliar.DataCollection.getInfo(1)) File "C:\Python26\lib\copy.py", line 162, in deepcopy y = copier(x, memo) File "C:\Python26\lib\copy.py", line 254, in _deepcopy_dict for key, value in x.iteritems(): RuntimeError
  • 在 JUnit 中将单元测试标记为预期失败(Mark unit test as an expected failure in JUnit)
    问题 如何在 JUnit 4 中将测试标记为预期失败? 在这种情况下,我想继续运行此测试,直到上游修补某些内容为止。 忽略测试有点过头了,因为那样我可能会忘记它。 我也许可以添加一个@expected注释并捕获assertThat抛出的异常,但这似乎也与预期的行为有关。 这是我当前的测试: @Test public void unmarshalledDocumentHasExpectedValue() { doc = unmarshaller.unmarshal(getResourceAsStream("mydoc.xml")); final ST title = doc.getTitle(); assertThat(doc.getTitle().toStringContent(), equalTo("Expected")); } 该断言应该成功,但由于上游错误,它没有成功。 然而,那个测试是正确的。 它应该会成功。 我发现的几乎所有替代方案都具有误导性。 现在我认为@Ignore("This test should pass once fixed upstream")是我最好的选择,但我仍然必须记得回到它。 我更喜欢测试运行。 在 Python 中,我可以使用 expectedFailure 装饰器: class ExpectedFailureTestCase(unittest
  • 什么是“索引超出范围”异常,我该如何解决? [复制](What is an “index out of range” exception, and how do I fix it? [duplicate])
    问题 这个问题已经在这里有了答案: 什么是IndexOutOfRangeException / ArgumentOutOfRangeException,如何解决? (4个答案) 5年前关闭。 我收到以下错误之一: “索引超出范围。必须为非负数并且小于集合的大小” “插入索引超出范围。必须为非负数并且小于或等于大小。” “指数数组的边界之外。” 这是什么意思,我该如何解决? 也可以看看 IndexOutOfRangeException ArgumentOutOfRangeException 回答1 为什么会发生此错误? 因为您尝试访问集合中的元素,所以使用了超出集合边界的数字索引。 集合中的第一个元素通常位于索引0 。 最后一个元素位于索引n-1 ,其中n是集合的Size (它包含的元素数)。 如果您尝试使用负数作为索引或大于Size-1的数字,则会出现错误。 索引数组如何工作 当您声明这样的数组时: var array = new int[6] 数组中的第一个和最后一个元素是 var firstElement = array[0]; var lastElement = array[5]; 所以当你写: var element = array[5]; 您正在检索数组中的第六个元素,而不是第五个。 通常,您将像这样遍历数组: for (int index = 0; index <
  • 如何在 ASP.NET 缓存应用程序中超过 IIS7 的 60% 内存限制(How can I exceed the 60% Memory Limit of IIS7 in ASP.NET Caching application)
    问题 如果这更像是 serverfault 与 stackoverflow,请原谅。 好像是在边境。 我们有一个应用程序,它使用 ASP.NET 缓存为电子商务应用程序缓存大量产品数据。 这是一个包含 65K 元素的字典对象,我们的计算将该对象的大小设置为 ~10GB。 问题: 对象消耗的内存量似乎远远超过我们计算的 10GB。 最大的担忧:我们似乎无法使用服务器中 32GB 的 60% 以上。 到目前为止我们尝试过的: 在 machine.config/system.web (sf 不允许标签,请原谅格式): processModel autoConfig="true" memoryLimit="80" 在 web.config/system.web/caching/cache (sf 不允许标签,请原谅格式): privateBytesLimit = "20000000000" (and 0, the default of course) percentagePhysicalMemoryUsedLimit = "90" 环境: Windows 2008R2 x64 32GB RAM IIS7 似乎没有什么能让我们超过 60% 的值。 见taskman的截图。 http://www.freeimagehosting.net/image.php?7a42144e03.jpg 回答1
  • MySQL amazon rds 中超出锁定等待超时(Lock wait timeout exceeded in MySQL amazon rds)
    问题 我有一个存储过程,它在一张表中进行保存操作。 在这个存储过程中,我在表中插入了多条记录。 这是我的表结构 Table : InviteMst ~~~~~~~~~~~~~~~~~ Name DataType Description -------- ------------ ---------------------- InviteID Int PrimaryKey (Auto Incr) Date Date UserID Int (ForignKey) EMailID varchar(50) Guid varchar(36) store procedure : usp_InviteMst ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CREATE PROCEDURE `usp_InviteMst`( IN n_UserID INT, IN EmailList MEDIUMTEXT ) BEGIN DECLARE d_Date DATETIME DEFAULT NOW(); IF LENGTH(EmailList) > 0 THEN SET @sqlQuery = ""; SET nPos = INSTR(EmailList, ","); WHILE (nPos <> 0) DO SET c_EmailID = TRIM(SUBSTRING(EmailList
  • 改善Python中超大型字典的性能(Improving performance of very large dictionary in Python)
    问题 我发现如果在开始时初始化一个空字典,然后在for循环中向字典中添加元素(大约110,000个键,每个键的值是一个列表,并且在循环中也在增加),则速度会降低for循环进行。 我怀疑问题在于,字典在初始化时不知道键的数量,并且执行的操作也不是很聪明,因此存储冲突可能会变得很频繁并且会减慢速度。 如果我知道键的数量以及这些键的确切含义,python中有什么方法可以使字典(或哈希表)更有效地工作? 我隐约记得,如果您知道键,则可以巧妙地设计哈希函数(完美的哈希值?)并预先分配空间。 回答1 如果我知道键的数量以及这些键的确切含义,python中有什么方法可以使字典(或哈希表)更有效地工作? 我隐约记得,如果您知道键,则可以巧妙地设计哈希函数(完美的哈希值?)并预先分配空间。 Python没有公开预定义大小的选项来加快字典的“成长阶段”,也没有提供对字典中“放置”的任何直接控制。 也就是说,如果始终事先知道键,则可以将它们存储在集合中,并使用dict.fromkeys()从该集合构建字典。 该类方法已优化为根据设置的大小对字典进行预大小设置,并且可以填充字典而无需任何新的__hash __()调用: >>> keys = {'red', 'green', 'blue', 'yellow', 'orange', 'pink', 'black'} >>> d = dict.fromkeys
  • 超过Github远程推送包大小(Github remote push pack size exceeded)
    问题 我是Git的新手,并且有一个相当大的项目,我想将其推送到Github上的远程仓库(仓库B)。 原始项目也位于Github上,但来自另一个回购协议(Repo A)。 我必须对Repo A中的文件进行一些更改,然后才能在Repo B上设置项目。我已经设置了遥控器,ssh键等,并且在将代码库推送到Repo B时遇到了问题。 我一直收到以下错误: $ git push <remote_repo_name> master Enter passphrase for key '/c/ssh/.ssh/id_rsa': Counting objects: 146106, done. Delta compression using up to 4 threads. Compressing objects: 100% (35519/35519), done. fatal: pack exceeds maximum allowed size00 GiB | 154 KiB/s fatal: sha1 file '<stdout>' write error: Invalid arguments error: failed to push some refs to 'git@github.com:<repo>.git 我在本地gitconfig中更改了以下设置 git config pack
  • 如何修复java.lang.IndexOutOfBoundsException(how to fix java.lang.IndexOutOfBoundsException)
    问题 线程“主”中的异常java.lang.IndexOutOfBoundsException:Index:0,Size:0 at java.util.ArrayList.rangeCheck(ArrayList.java:604) 在arraylist.java中 private void rangeCheck(int index) { if (index >= size) throw new IndexOutOfBoundsException(outOfBoundsMsg(index)); } 排队 List lstpp = getResult(pp) ; System.out.println("=====Persegi Panjang===="); System.out.println("luas = "+((Integer)lstpp.get(0))); 请帮忙 回答1 您想从一个空数组中获取一个元素。 这就是为什么Size: 0异常为Size: 0 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 因此,直到填充数组,您才能执行lstpp.get(0) 。 回答2 lstpp为空。 您无法访问空列表的第一个元素。 通常,您可以检查size > index 。 在您的情况下,您需要检查lstpp是否为空。
  • 错误:预期的不合格 ID 错误:含义和修复? [复制](error: expected unqualified-id error: Meaning and fix? [duplicate])
    问题 这个问题在这里已经有了答案: 如何修复 C++ 错误:预期的不合格 ID (6 个回答) 1 年前关闭。 我只是在学习 C++,从 python3 和 QBASIC 出来,我很难阅读编译器错误并理解它们,这使得调试变得困难。 我遇到的问题是我一直在拉编译错误: 错误:预期的不合格 ID 这发生在第 10 行和第 18 行。 我正在尝试使用 linuxs 的 g++ 编译这个程序: g++ proto.cpp -o prototype 该程序的代码如下。 #include <iostream> #include <string> using namespace std; //Declaring Functions //Trouble Function int mult ( double x, double y ); { return x * y; } //Trouble Function int dive ( double x, double y ); { if ( y == 0 ) { cout<<"Error, cannot divide by zero.\n"; return; } else { return x / y; } } //This error doesn't occur beyond this point. int plus ( double x
  • 如何更改弹出框的大小(How to change the size of a popover)
    问题 我无法更改弹出窗口演示文稿的大小。 这是我到目前为止所拥有的 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover { if segue.identifier == "popoverView" { let vc = segue.destinationViewController let controller = vc.popoverPresentationController if controller != nil { controller?.delegate = self controller?.sourceView = self.view controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230) controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0) } } } 到目前为止,所有这些操作都是将弹出框居中并删除箭头,这很好。 但它不会调整容器的大小。