【问题标题】:Getting string representation of pathlib object获取 pathlib 对象的字符串表示
【发布时间】:2018-08-14 18:07:45
【问题描述】:

我正在编写一个 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}'))

【问题讨论】:

    标签: python-3.x pdf pathlib


    【解决方案1】:

    根据pathlib documentation

    路径的字符串表示是原始文件系统路径本身(以本机形式,例如在 Windows 下带有反斜杠),您可以将其传递给将文件路径作为字符串的任何函数:

    >>> p = PurePath('/etc')
    >>> str(p)
    '/etc'
    >>> p = PureWindowsPath('c:/Program Files')
    >>> str(p)
    'c:\\Program Files'
    

    所以解决方案是用str() 函数包装Path() 对象:

    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}')))
    

    顺便说一句,pathlib 的另一种方法将路径作为字符串返回:as_posix()

    返回带有正斜杠 (/) 的路径的字符串表示形式:

    >>>
    >>> p = PureWindowsPath('c:\\windows')
    >>> str(p)
    'c:\\windows'
    >>> p.as_posix()
    'c:/windows'
    

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2016-03-19
      • 2021-01-26
      • 1970-01-01
      相关资源
      最近更新 更多