在闪存驱动器上使用pyInstaller后指定PyPDF2的文件路径



我已经编写了一个python脚本,它可以从pdf文档中抓取账号,并且在本地运行良好。我使用pyinstaller将脚本提取到可执行文件中,并将其保存到闪存驱动器中。我把pdf文档移到了我认为是CWD的地方,但当我尝试运行它时,我的终端告诉找不到我想要打开的pdf。

最终,我希望我的客户端能够放入闪存驱动器,将最新版本的pdf移到同一目录中,并运行脚本。我需要在正确的方向上推动如何为PyPDF2指定文件路径。这是我迄今为止的代码。

def getDataFromPdf():
acctNumberRegex = re.compile(r'ddddd-ddd-dddd')
pdfFile = open('records.pdf', 'rb')
reader = PyPDF2.PdfFileReader(pdfFile)
for pageNum in range(0,10):
page = reader.getPage(pageNum).extractText()
accounts = acctNumberRegex.findall(page)
for acct in accounts:
if acct not in results:
results.append(acct)
print(len(results)) 

谢谢!

您可以将文件路径作为参数传递到函数中。

因此:

def getDataFromPdf(filePath):
acctNumberRegex = re.compile(r'ddddd-ddd-dddd')
pdfFile = open(filePath + 'records.pdf', 'rb')
reader = PyPDF2.PdfFileReader(pdfFile)
for pageNum in range(0,10):
page = reader.getPage(pageNum).extractText()
accounts = acctNumberRegex.findall(page)
for acct in accounts:
if acct not in results:
results.append(acct)
print(len(results)) 

通过r/learnpython 的解决方案

SCRIPT_DIR = Path(sys.executable).parent
def getDataFromPdf():
pdf_file = SCRIPT_DIR / 'records.pdf'
print(pdf_file.resolve())
with open(pdf_file.resolve(),'rb') as records:
acctNumberRegex = re.compile(r'ddddd-ddd-dddd')
reader = PyPDF2.PdfFileReader(records)
for pageNum in range(0,reader.numPages):
page = reader.getPage(pageNum).extractText()
accounts = acctNumberRegex.findall(page)
for acct in accounts:
if acct not in results:
results.append(acct)
print(str(len(results)) + " account numbers pulled from PDF")

最新更新