Python使用另一个函数内部函数的输出

时间:2017-05-05 15:15:09

标签: python function csv variables pdf

很抱歉发布另一个重复的问题,但我一直在处理这个基本概念,尽管我试图向其他人学习。例子我仍然不明白。

我要做的是使用PyPDF2获取PDF的内容并将其写入CSV,我正在逐步构建和测试我的程序。我希望我的程序可以做两件事:

1从pdf文件中获取文本

  1. 将抓取的文本输出到csv文件中的单个条目。
  2. 现在,我缺乏基本的编程概念。这是代码:

     import csv
     import os
     import PyPDF2
    
     os.chdir('C:/Users/User/Desktop')
    
     def getText(happy_file):
         pdf_file_obj = open(happy_file, 'rb')
         pdf_reader = PyPDF2.PdfFileReader(pdf_file_obj)
         pdf_reader.numPages #optional
         page_obj = pdf_reader.getPage(0)
         return page_obj.extractText()
    
     def writeToCSV(happy_file):
         output_file = open('myfinalfile.csv', 'w', newline ='')
         output_writer = csv.writer(output_file)
         output_writer.writerow([str(getText())])
         output_file.close()
    

    我有两个函数来完成这个任务getText和writeToCSV。我的目标是对其进行编程,使得我需要做的就是调用writeToCSV(' anyfile.pdf')并让它使用这两个函数来提取数据并将其放入csv中。 happy_file目前是两个函数的参数,但我知道需要改变。我想我需要第三个main()函数,它以变量包含在main()中的方式合并这两个函数。这可能是我没有看到的基本方面。另一个预感是必须有一种方法使getText在writeToCSV中返回一个可用的变量(实际上这就是这篇文章的全部目的)。我使用了全球'在变量前面访问其他函数中的变量,但我听说这是一个坏主意。

    我知道我可以把它变成一个函数但是随着事情变得越来越复杂(即我想循环遍历一堆pdfs),我想把我的程序放在更小的块中,每个代表一个步骤。也许我真的很难理解功能。也许看到我的实际代码以正确的方式重新格式化将使它"点击"对我来说。

    解决这个问题将是编写结构良好的程序的正确方向的一个重要步骤,而不仅仅是计算机执行的一个巨大的方向列表。

    以下是我研究过的其他帖子的列表:

    Python - Passing a function into another function

    using the output of a function as the input in another function python new to coding

    Python - output from functions?

    Python: accessing returned values from a function, by another function

    谢谢!

1 个答案:

答案 0 :(得分:2)

您需要将id传递到Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'lastone.company_status.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by函数中的happy_file函数。

然后,您可以调用getText,如代码示例底部所示。

writeToCSV

或者,如果由于某种原因您不喜欢writeToCSV功能,您可以这样做:

 import csv
 import os
 import PyPDF2

 os.chdir('C:/Users/User/Desktop')

 def getText(happy_file):
     pdf_file_obj = open(happy_file, 'rb')
     pdf_reader = PyPDF2.PdfFileReader(pdf_file_obj)
     pdf_reader.numPages #optional
     page_obj = pdf_reader.getPage(0)
     return page_obj.extractText()

 def writeToCSV(happy_file):
     output_file = open('myfinalfile.csv', 'w', newline ='')
     output_writer = csv.writer(output_file)
     output_writer.writerow([str(getText(happy_file))])
     output_file.close()

writeToCSV("anyfile.pdf")