Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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 xlrd:要读取多个xl文件的工作表并存储在一个列表/数组中吗?(更好的方式?)_Python_Excel_Xlrd_Xlwt - Fatal编程技术网

Python xlrd:要读取多个xl文件的工作表并存储在一个列表/数组中吗?(更好的方式?)

Python xlrd:要读取多个xl文件的工作表并存储在一个列表/数组中吗?(更好的方式?),python,excel,xlrd,xlwt,Python,Excel,Xlrd,Xlwt,我没有太多使用xlrd/xlwt的xp,但我已经设法访问了我想从中收集数据的一个文件。我想从目录中的所有文件中收集数据,并将其移动到一张工作表中。我在想,如果有什么方法可以将所有数据存储在一个数组/列表中,那么输出到csv就很容易了。如果这是一个太多的工作,有一个简单的方法plz帮助,否则我就用空闲来玩弄的想法,并提出了这个到目前为止: >>> import xlrd, xlwt >>> book = xlrd.open_workbook('c:\excelT

我没有太多使用xlrd/xlwt的xp,但我已经设法访问了我想从中收集数据的一个文件。我想从目录中的所有文件中收集数据,并将其移动到一张工作表中。我在想,如果有什么方法可以将所有数据存储在一个数组/列表中,那么输出到csv就很容易了。如果这是一个太多的工作,有一个简单的方法plz帮助,否则我就用空闲来玩弄的想法,并提出了这个到目前为止:

>>> import xlrd, xlwt
>>> book = xlrd.open_workbook('c:\excelTry\Papineau.csv.xls')
>>> book.sheet_names()
[u'Charge Codes', u'Month']
>>> sh = book.sheet_by_index(1)
>>> #produces:
>>> sh.book
<xlrd.Book object at 0x01213BF0>
>>> for x in range(0, 10):
        sh.row_values(x)
[u'William Papineau', u'Pay Period 11', '', '', u' ', u' ', '', '', '', u'Weekly Total', '', '', u' ', '', '', '', '', u'Weekly Total', u'Biweekly', u'Percent of Effort']
[u'Index Number', u'Index Description', 40678.0, 40679.0, 40680.0, 40681.0, 40682.0, 40683.0, 40684.0, '', 40685.0, 40686.0, 40687.0, 40688.0, 40689.0, 40690.0, 40691.0, '', u'Total', '']
[u'E45776', u'Seat Belt Study', '', 8.0, 8.0, 8.0, 8.0, u' ', '', 32.0, '', '', '', '', '', u' ', '', 0.0, 32.0, 0.4155844155844156]
[u'E43457', u'MultiScaleWaterQuality', '', '', '', '', '', 8.0, '', 8.0, '', 5.0, 8.0, u' ', '', '', '', 13.0, 21.0, 0.2727272727272727]
[u'E45125', u'GLOSS', '', '', '', '', '', '', '', 0.0, '', '', '', 8.0, 8.0, '', '', 16.0, 16.0, 0.2077922077922078]
[u'E45131', u'GLOS AOC Trib Monitoring', '', '', '', '', '', '', '', 0.0, '', '', '', '', '', 8.0, '', 8.0, 8.0, 0.1038961038961039]
导入xlrd、xlwt >>>book=xlrd.open_工作簿('c:\excelTry\Papineau.csv.xls') >>>书页名称() [u‘费用代码’,u‘月份’] >>>sh=按索引(1)列出的图书页 >>>#生产: >>>书 >>>对于范围(0,10)内的x: sh.row_值(x) [u'William Papineau',u'Pay Period 11','','','','','',u'Weekly Total','','','','','',u'Weekly Total',u'Biweekly',u'Percent of Work'] [u‘索引编号’、u‘索引说明’、40678.0、40679.0、40680.0、40681.0、40682.0、40683.0、40684.0’、40685.0、40686.0、40687.0、40688.0、40689.0、40690.0、40691.0’、u‘总计’、“”] [u'E45776',u'安全带研究','',8.0,8.0,8.0,8.0,u'','',32.0','','','','',u'','',0.0,32.0,0.4155844155844156] [u'E43457',u'MultiScaleWaterQuality','','','','',8.0',8.0',5.0,8.0,u'','','','','',13.0,21.0,0.2727] [u'E45125',u'GLOSS','','','','','',0.0','','',8.0,8.0','',16.0,16.0,0.2077922077922078] [u'E45131',u'GLOS AOC Trib监控','','','','','',0.0',,'','','','','',8.0',8.0,8.0,0.10389610389691039]
这将生成看起来像列表对象的对象,但我每次尝试操作或附加它时都会产生错误,称为not scriptable或iterable。文件迭代将由os模块使用os.listdir(path)和for循环处理。任何帮助都将不胜感激

到目前为止,在您的代码中,您似乎没有使用从工作表中获得的值执行任何操作。也许有些代码没有粘贴到问题中

您能包含最后一行代码的输出吗

您说您想将其全部存储在一个列表中。
试着这样做:

final = []
for rowx in xrange(sh.nrows):
    final.extend(sh.row_values(rowx))
另外:
小心Windows路径。仅当下列字母与反斜杠不构成转义序列(例如
\t
或tab)时,单个反斜杠才有效。其他选项(选项3可能是最好的;除非有不使用它的特定原因):

  • 原始字符串:
    book=xlrd.open_工作簿(r'c:\excelTry\Papineau.csv.xls')
  • 正斜杠:
    book=xlrd.open_工作簿('c:/excelTry/Papineau.csv.xls')

  • book=xlrd.open_工作簿(os.path.join('c:'、'excelTry'、'Papineau.csv.xls'))

  • 我知道了如何附加它们,但我已经包含了结果供您查看。如果我理解正确,final.extend()将允许我继续右移到上一个文件末尾的同一数组?非常感谢你。我会玩一会儿,看看你是否有机会回答。是的。您可以使用
    extend()
    将每张工作表的行值放入该
    final
    列表,根据文档,该列表将“通过追加给定列表中的所有项目来扩展列表;相当于
    a[len(a):]=L
    data = []
    for i in xrange(sh.nrows):
        data.append(sh.row_values(i))
    it will append each rows from xls file into list "data".
    eg: [['a','b'],['c','d'],['e','f']] like this .