Проблема с os.path () в питоне - PullRequest
0 голосов
/ 25 января 2019

У меня есть скрипт MacOS PyObjC, который получает имя файла PDF и добавляет его в качестве метаданных заголовка к самому PDF.

Я использую пару ключ / переменная kCGPDFContextTitle и title,который входит в словарь метаданных.

Если я определю 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, я не вижу структурных различий между рабочими данными и нерабочими данными.Тип является строкой.Другие ключи / пары включены и отображаются в метаданных без проблем.

1 Ответ

0 голосов
/ 26 января 2019

Странно, это было исправлено с дальнейшей обработкой текста.

Использование метода capitalize() в конце объявления строки сработало.

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

В качестве альтернативы, я мог бы также получитьтот же результат, удалив файл, заканчивающийся os.path.splitext() после объявления title.

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

Не знаю, что не так с исходной строкой, но боги CoreGraphics теперь удовлетворены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...