很抱歉发布另一个重复的问题,但我一直在处理这个基本概念,尽管我试图向其他人学习。例子我仍然不明白。
我要做的是使用PyPDF2获取PDF的内容并将其写入CSV,我正在逐步构建和测试我的程序。我希望我的程序可以做两件事:
1从pdf文件中获取文本
现在,我缺乏基本的编程概念。这是代码:
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
谢谢!
答案 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")