首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中os.path()的问题

python中os.path()的问题
EN

Stack Overflow用户
提问于 2019-01-25 21:08:31
回答 1查看 138关注 0票数 0

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

我使用kCGPDFContextTitletitle的键/变量对,它放入元数据字典中。

如果我从sys.argv中将title定义为整个文件路径,那么这个值就会正确地出现在PDF的元数据中。

如果我将title定义为一个给定的字符串,它就可以工作。

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

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

代码语言:javascript
复制
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。包含其他密钥/对,并出现在元数据中,没有问题。

EN

回答 1

Stack Overflow用户

发布于 2019-01-26 17:00:17

奇怪的是,这是通过进一步的文本处理修复的。

在字符串声明的末尾使用capitalize()方法是可行的。

代码语言:javascript
复制
title = os.path.basename(filename).capitalize()

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

代码语言:javascript
复制
title = os.path.basename(filename)
title = os.path.splitext(title)[0]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54365961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档