Jar*_*2.0 18 pdf python-3.x pathlib
我正在编写一个 python 脚本,将多个 PDF 合并为一个,然后放入输出文件夹中。每个 PDF 都将位于不同的文件夹中,上面有员工姓名,并且需要与另一个文件夹中相应的 pdf 合并。并非所有员工都会拥有每个文件,因此我将其包含在逻辑中。
我当前遇到的问题是 PdfFileMerger 在附加文件时需要一个字符串,并且 pathlib 库返回一个 windowpath 对象。这不会轻易转换为字符串。我从这篇文章pypdf Merging multiple pdf files into one pdf 中获取有关 PyPDF2 的信息。我是 pathlib 库的新手,我应该进行转换还是应该获取不同的路径对象?
from PyPDF2 import PdfFileMerger, PdfFileReader
from pathlib import Path
tc = Path('totalcomp')
merger = PdfFileMerger()
for i in tc.iterdir():
pdfs = []
try:
pdfs.append(Path(f'profitshare/{i.name}'))
pdfs.append(Path(f'merit/{i.name}'))
finally:
pdfs.append(i)
for pdf in pdfs:
output = i.name
merger.append(pdf, 'rb')
merger.write(Path(f'/output/{i.name}'))
Run Code Online (Sandbox Code Playgroud)
and*_*1er 23
路径的字符串表示形式是原始文件系统路径本身(以本机形式,例如 Windows 下带有反斜杠),您可以将其传递给将文件路径作为字符串的任何函数:
>>> p = PurePath('/etc')
>>> str(p)
'/etc'
>>> p = PureWindowsPath('c:/Program Files')
>>> str(p)
'c:\\Program Files'
Run Code Online (Sandbox Code Playgroud)
所以解决方案是用函数包装Path()
对象str()
:
from PyPDF2 import PdfFileMerger, PdfFileReader
from pathlib import Path
tc = Path('totalcomp')
merger = PdfFileMerger()
for i in tc.iterdir():
pdfs = []
try:
pdfs.append(str(Path(f'profitshare/{i.name}')))
pdfs.append(str(Path(f'merit/{i.name}')))
finally:
pdfs.append(i)
for pdf in pdfs:
output = i.name
merger.append(pdf, 'rb')
merger.write(str(Path(f'/output/{i.name}')))
Run Code Online (Sandbox Code Playgroud)
顺便说一句,pathlib 还有另一种方法,它以字符串形式返回路径:as_posix()
返回带有正斜杠 (/) 的路径的字符串表示形式:
>>> p = PureWindowsPath('c:\\windows')
>>> str(p)
'c:\\windows'
>>> p.as_posix()
'c:/windows'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19361 次 |
最近记录: |