返回函数内部的值



这可能已经被问得要死,但我不知道该怎么做。

这个程序打开一个pdf并查找运行时指定的字符串的模式。然后打印出在每个pdf中找到所述字符串的次数。我要做的是将数字添加到amountofhits中。与"totalHits"所以我可以找出每个实例的总数例如在一个pdf文件夹中。

这是代码:

import os
import re
import PyPDF2 as pypdf2
def pdf(name):
try:
pdfObject = f"{name}"
readObject = pypdf2.PdfFileReader(pdfObject)
pageContent = readObject.getPage(0)
pageExtract = pageContent.extractText()
amountOfHits = len(re.findall(rePattern, pageExtract))
print(f"{pdfObject} contains {rePattern}: "+ str(amountOfHits) + " times.")
except:
return
rePattern = input("Pattern: ")
dirContent = os.listdir()
totalHits = 0
content = ""
for x in range(len(dirContent)):
content = dirContent[x]
pdf(content)
print(f"Total of {totalHits}")

运行时的输出示例:

LoopReport 09.pdf contains 1999: 44 times.
LoopReport 10.pdf contains 1999: 37 times.
LoopReport 11.pdf contains 1999: 41 times.
LoopReport 12.pdf contains 1999: 46 times.
LoopReport 13.pdf contains 1999: 42 times.
LoopReport 14.pdf contains 1999: 46 times.
LoopReport 15.pdf contains 1999: 42 times.
LoopReport 16.pdf contains 1999: 16 times.
LoopReport 17.pdf contains 1999: 22 times.
LoopReport 18.pdf contains 1999: 23 times.
LoopReport 19.pdf contains 1999: 39 times.

您可以简单地添加

return amountOfHits

在try-except子句的末尾。在except子句中传递或返回0。

在for循环中,将输出捕获到变量中并将其添加到总数中,例如

total = 0
for x in range(len(dirContent)):
content = dirContent[x]
total += pdf(content)

正如建议的那样,您的函数可以返回hist的数量,然后将其添加到totalHits中,如下所示:

import os
import re
import PyPDF2 as pypdf2
def pdf(name):
try:
pdfObject = f"{name}"
readObject = pypdf2.PdfFileReader(pdfObject)
pageContent = readObject.getPage(0)
pageExtract = pageContent.extractText()
amountOfHits = len(re.findall(rePattern, pageExtract))
print(f"{pdfObject} contains {rePattern}: "+ str(amountOfHits) + " times.")
except:
return 0 # Bare excepts shouldn't be used anyway see E722 
return amountOfHits # <--- HERE
rePattern = input("Pattern: ")
dirContent = os.listdir()
totalHits = 0
content = ""
for x in range(len(dirContent)):
content = dirContent[x]
totalHits += pdf(content) # <--- HERE
print(f"Total of {totalHits}")

最新更新