Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从巨大的Excel工作表中提取特定的数据行?_Python - Fatal编程技术网

如何使用Python从巨大的Excel工作表中提取特定的数据行?

如何使用Python从巨大的Excel工作表中提取特定的数据行?,python,Python,我需要获得特定的数据行,其中包含某些关键字(名称),并将它们写入另一个文件。起始文件是1.5 GB Excel文件。我不能把它打开并保存为不同的格式。我应该如何使用python处理此问题?我没有使用过它,但它似乎可以很好地读取Excel数据。您的问题是您正在使用Excel 2003。。您需要使用更新的版本才能读取此文件。2003将无法打开大于1M行的文件。我觉得您有一个使用Excel 2007创建的电子表格,而您只有Excel 2003 Excel 2007可以创建1048576行乘以16384

我需要获得特定的数据行,其中包含某些关键字(名称),并将它们写入另一个文件。起始文件是1.5 GB Excel文件。我不能把它打开并保存为不同的格式。我应该如何使用python处理此问题?

我没有使用过它,但它似乎可以很好地读取Excel数据。

您的问题是您正在使用Excel 2003。。您需要使用更新的版本才能读取此文件。2003将无法打开大于1M行的文件。

我觉得您有一个使用Excel 2007创建的电子表格,而您只有Excel 2003

Excel 2007可以创建1048576行乘以16384列的工作表,而Excel 2003只能创建65536行乘以256列的工作表。因此,您无法在Excel中打开整个工作表

如果工作簿的尺寸刚好更大,那么
xlrd
应该可以读取该文件,但是如果该文件实际上大于您计算机中的内存量(我认为这里不是这种情况,因为您可以使用EditPad lite打开该文件)然后您必须找到另一种方法,因为
xlrd
会将整个工作簿读入内存

假设第一种情况:

import xlrd

wb_path = r'c:\bigfile.xls'
output_path = r'c:\output.txt'

wb = xlrd.open(wb_path)
ws = wb.sheets()[0]  # assuming you want to work with the first sheet in the workbook

with open(output_path, 'w') as output_file:
    for i in xrange(ws.nrows):
        row = [cell.value for cell in ws.row(i)]

        # ... replace the following if statement with your own conditions ...
        if row[0] == u'interesting':
            output_file.write('\t'.join(row) + '\r\n')
这将为您提供一个以制表符分隔的输出文件,该文件应在Excel中打开

编辑:


根据您对问题5的回答,确保在C驱动器的根目录中有一个名为“bigfile.xls”的文件。如果文件不存在,请将
wb\u路径更改为要打开的文件的正确位置。

我是xlrd的作者和维护者。请编辑您的问题以提供以下问题的答案。【SO评论中的此类内容很难阅读】

  • 这个文件有多大(MB)?[“巨大”不是一个有用的答案]

  • 是什么软件创建了这个文件

  • 你的电脑有多少内存

  • 当您尝试使用Excel打开文件时,会发生什么情况?请解释“我可以部分打开它”

  • 当您尝试使用
    xlrd.open\u工作簿
    使用脚本打开“C:\bigfile.xls”时,您收到的错误消息是什么?包括您运行的脚本、完整回溯和错误消息

  • 什么操作系统,什么版本的Python,什么版本的xlrd

  • 你知道文件中有多少工作表吗


  • 问题中的细节也很感谢。您提到可以在EditPad Lite中打开它;数据是什么样子的(例如二进制数据、XML、CSV、制表符分隔符等)?如果你不知道,你可以编辑你的问题并粘贴一个样本。它是可读的单词,用//分隔,在那里我会看到不同的列。像John//Doe//male//caucasian//正如@tgray所问,发布一个示例(编辑您的问题!)。复制文件的前四行,将它们粘贴到您的问题中,选择粘贴的行,然后按Ctrl-K以一种有用的方式格式化它们。我在使用xlrd时遇到了一个非常困难的问题,我无法让它打开我的文件。然后请在您的问题中发布到目前为止您尝试了哪些不起作用的内容。你甚至不能用Excel自己打开文件吗?不,文件太大,不能用Excel完全打开。我可以部分打开它。我有这个程序:从xlrd导入OpenU工作簿,cellname book=open\u工作簿('C:\\bigfile.xls')sheet=book.sheet\u by\u index(0)print sheet.name print sheet.nrows print sheet.ncols for row\u index in range(sheet.nrows):for col\u index in range(sheet.ncols):print cellname(row\u index,col\u index),print sheet.cell(行索引、列索引)。值尝试在记事本或类似文件中浏览该文件,以确保它是实际的Excel文件,而不是名为.xls[x]的CSV文件这可能会混淆Excel。所以问题是,我可以制作一个sample.xls文件,并将其命名为C:\\sample.xls,它可以很好地打开并列出数据。但当我想使用真正巨大的实际数据文件C:\\bigfile.xls时,它说该文件不存在。对于一个Excel文件有效地包含256列或65536行,它必须e由Excel 2007或2010以XLSX格式或XLSB格式创建。Excel 2003不会打开任何XLSX或XLSB文件(除非可能已添加了兼容工具包)。除非OP提供了一些准确的信息,否则我们目前所拥有的只是无聊的猜测。@John Machin,没错。尽管我似乎记得Excel 2007/2010可以将超过65536行的工作表保存为XLS文件,并在不丢失任何数据的情况下重新打开它。由于我将在当天注销,我想我以前会提供我的猜测离开,只是根据OP的评论进行了有根据的猜测。它说有一个语法错误,这一行以open(output_path,'w')作为output_file:@novak,如果您使用的是python 2.5,您需要包含另一个import语句:
    from u_ufuture_u_u导入with_u语句
    @tgray:““Excel 2007/2010可以将超过65536行的工作表保存为XLS文件并重新打开,而不会丢失任何数据。”"--错误XLS格式的65536行以上没有打开;行索引保存在一个16位无符号整数中。1.文件大小为1500000 KB。2.我相信excel。我自己没有创建文件。3.不够。它经常冻结。4.excel说我无法打开etire文件,一些数据将丢失。因此我可以打开文件的第一部分并不是记录的全部内容5.它说:名为的文件不存在6.Python 2.6 windows,我不确定xlrd 7.只有一个工作表TRE Q3:您到底有多少MB内存?关于Q5:(1)请确保您输入了文件的完整正确路径;请给出确切的错误消息并进行回溯(使用复制/粘贴)(2)请告诉我们通过执行
    python-c“print repr”获得的文件前8个字节的内容