【问题标题】:Python Pathlib path object not converting to string [duplicate]Python Pathlib路径对象未转换为字符串[重复]
【发布时间】:2017-11-03 02:11:04
【问题描述】:

我正在尝试使用 Shutil 使用 Pathlib 中的路径对象复制 pdf 文件,但是当我运行我的代码时,我收到错误“str object is not callable” 使用 str() 将我的路径转换回字符串时。任何解释为什么会发生这种情况都会非常有帮助。谢谢!

from pathlib import Path
from wand.image import Image as wandImage
import shutil
import sys
import os

def pdf2Jpeg(pdf_path):
    pdf = pdf_path
    jpg = pdf[:-3] + "jpg"
    img = wandImage(filename=pdf)
    img.save(filename=jpg)

src0 = Path(r"G:\Well Schematics\Well Histories\Merged")
dst0 = Path(r"G:\Well Schematics\Well Histories\Out")
if not dst0.exists():
    dst0.mkdir()

pdfs = []
api = ''
name = ''
pnum = ''
imgs = []

for pdf in src0.iterdir():
    pdfs.append(pdf)

for pdf in pdfs:

    if not dst0.exists():
        dst0.mkdir()

    str = str(pdf.stem)
    split = str.split('_')
    api = split[0]
    name = split[1]
    pnum = split[2]

    shutil.copy(str(pdf), str(dst0))
    for file in dst0.iterdir():
        newpdf = file
    pdf2Jpeg(str(newpdf))
    newpdf.unlink()

【问题讨论】:

    标签: python shutil pathlib


    【解决方案1】:

    问题出在这里:

    str = str(pdf.stem)
    

    您将覆盖值str,因此从循环的第二次迭代开始,str 不再引用内置的str 函数。为此变量选择一个不同的名称。

    【讨论】:

    • Path.stem 无论如何都会返回一个 str 对象,因此您可以通过执行以下操作进一步简化: split = pdf.stem.split('_')
    • 避免使用内置函数 docs.python.org/3/library/functions.html 作为任何对象的命名空间。
    • 你也可以Path(path_here).as_posix()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2022-08-17
    • 2014-08-20
    • 1970-01-01
    • 2023-03-11
    • 2020-01-25
    • 2020-11-15
    相关资源
    最近更新 更多