返回包含python中的可流动项的列表

返回包含python中的可流动项的列表,python,list,function,pdf,reportlab,Python,List,Function,Pdf,Reportlab,我有一段代码,它生成一些数据(段落和表格),这些数据最终会变成pdf格式。我正在使用python中的生成此pdf 现在,我必须在10个文件上运行这个函数。最后,结果应该放在一个pdf文档中。一种方法是,在一个循环中运行这个函数10次,使用reportlib生成10个PDF,然后使用reportlib组合它们。我不喜欢这个 相反,我将列表从函数返回到主函数中,并在每个循环结束时将其附加到列表中。然后我尝试在main函数中构建最终的pdf,但它似乎不起作用。以下是主要代码: doc = Simple

我有一段代码,它生成一些数据(段落和表格),这些数据最终会变成pdf格式。我正在使用python中的生成此pdf

现在,我必须在10个文件上运行这个函数。最后,结果应该放在一个pdf文档中。一种方法是,在一个循环中运行这个函数10次,使用reportlib生成10个PDF,然后使用reportlib组合它们。我不喜欢这个

相反,我将列表从函数返回到主函数中,并在每个循环结束时将其附加到列表中。然后我尝试在main函数中构建最终的pdf,但它似乎不起作用。以下是主要代码:

doc = SimpleDocTemplate("%s/taxonomy_report.pdf" %(path), pagesize=letter)
final_table = [] 
for folders in range(0,11):
     a=taxonomy_function(path,folders)
     final_table.append(a)

 doc.build(final_table)
现在,在函数分类\函数中,我有以下内容

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet

elements = [] #Keep appending whatever you want to add to the pdf

styleH = styles["Heading2"]
p = Paragraph('''Multiple-bit error/fault classification''', styleH)
elements.append(p)
t1=Table(data_FF)
elements.append(t1)
return elements
现在,在main函数中,如果我检查final_表的内容,它是空的!也就是说,每次调用taxonomy_函数()时,变量“a”在main()中都包含一个空列表

Final elements is [[], [], [], [], [], None, [], [], [], [], []]
好吧,不知怎的,退货问题解决了。。 现在,我不能做doc.build(final_table)。但是,我可以做doc.build(final_table[0])、doc.build(final_table)等等,如果我在循环中做doc.build(),它将重写以前的数据,我将只留下最后一个条目。有没有一种方法可以使用doc.build(final_table)一次性将我最终表格中的列表写入pdf?当我这样做时,Python会出错

File "python_taxonomy_all_examples.py", line 51, in <module>
    doc.build(final_table)
  File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
  File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 880, in build
    self.handle_flowable(flowables)
文件“python\u taxonomy\u all\u examples.py”,第51行,在
文件构建(最终表格)
文件“/usr/lib/python2.7/dist packages/reportlab/platypus/doctemplate.py”,第1117行,内部版本
BaseDocTemplate.build(self、flowables、canvasmaker=canvasmaker)
文件“/usr/lib/python2.7/dist packages/reportlab/platypus/doctemplate.py”,第880行,内部版本
自身手柄可流动(可流动)

如果我看对了,您正在将嵌套列表传递给
doc.build()
。这可能就是问题所在。您不必将列表附加到另一个列表中,而必须将它们连接起来:

更改
final_表。将(a)
附加到
final_表=final_表+a


您应该有一个完整的故事,只需调用
doc.build()

返回列表的方式没有问题,但分类功能似乎工作不正常。您是否单独测试过此功能?如果它返回
None
,则它包含一个不显式终止的代码路径。函数的其余部分在哪里?函数大约有400行长。。所以,我没有发布整个函数。如果它单独工作,返回一个非空列表,那么您没有正确调用它;在调用之前,请使用
print
检查参数。我刚刚编辑了我的帖子,以显示函数和main()内部的输出,没关系。。我不知道怎么做,但它现在似乎起作用了!