麻烦操作系统路径()在python中

2024-06-16 15:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个MacOS PyObjC脚本,它获取PDF的文件名,并将其作为标题元数据添加到PDF本身。你知道吗

我使用了一个键/变量对kCGPDFContextTitletitle,它进入元数据字典。你知道吗

如果我将title定义为取自sys.argv的整个文件路径,那么该值将正确地显示在PDF的元数据中。你知道吗

如果我将title定义为给定的字符串,它就可以工作。你知道吗

如果我将title定义为os.path.basename(filename),那么它不会出现在元数据中。你知道吗

文件名中的空格不是一个因素。相关代码为:

def setMetadata(filename):
    options = {}    
    title = os.path.basename(filename)  
    titleKey = Quartz.kCGPDFContextTitle

    pdfURL = NSURL.fileURLWithPath_(filename)
    pdfDoc = Quartz.PDFDocument.alloc().initWithURL_(pdfURL)

    options[titleKey] = title
    pdfDoc.writeToFile_withOptions_(filename, options)

if __name__ == "__main__":
    for filename in sys.argv[1:]:
        setMetadata(filename)

如果我print()使用options字典,我看不到工作数据和非工作数据之间的结构差异。类型为string。其他键/对也包括在内,并在元数据中显示,不会出现问题。你知道吗


Tags: 数据path字典定义pdftitleos文件名
1条回答
网友
1楼 · 发布于 2024-06-16 15:31:57

奇怪的是,这是固定的进一步文本处理。你知道吗

在字符串声明的末尾使用capitalize()方法是有效的。你知道吗

title = os.path.basename(filename).capitalize()

或者,我也可以通过在声明title之后删除以os.path.splitext()结尾的文件来获得相同的结果。你知道吗

title = os.path.basename(filename)
title = os.path.splitext(title)[0]

不知道原来的字符串出了什么问题,但是CoreGraphics的神现在满意了。你知道吗

相关问题 更多 >