Преобразование os.path в модуль pathlib не работает должным образом - PullRequest
1 голос
/ 19 января 2020

Я пытался заменить os.path новым модулем pathlib. В этих строках os.path работает каждый раз без ошибок, а модуль Pathlib выдает ошибку:

Path' and 'str'
[!] send_logs // Error.. ~ unsupported operand type(s) for +: 'PosixPath' and 'str'

Основная цель этого - записать файл в эту папку; использование Path.is_dir (log_dir) возвращает True. Попытка этого через модуль pathlib приводит к ошибке. Я попытался найти другие источники для ответа и пришел к PosixPath в качестве отдельной переменной для использования в expanduser; безрезультатно меня привезли сюда

Прошу прощения, так как я новичок, и это один из моих первых «проектов»! Вся помощь очень ценится. Я также сталкивался с подобными вопросами, но они были направлены на поиск домашнего каталога, т.е. Path.owner (Path.home ())

#log_dir = os.path.expanduser('~') + '/Downloads/'   --- commented out for pathlib/path
p = PosixPath('~' + '/Downloads/')
log_dir = Path.expanduser(Path(p))

Спасибо за предоставленную помощь. Удалось заставить его работать с одной строкой: так же, как os.path.expanduser ()

log_dir = str(PosixPath('~' + '/Downloads/').expanduser())

1 Ответ

0 голосов
/ 19 января 2020

РЕДАКТИРОВАТЬ : Я думаю, что вы ищете это:

>>> p = PosixPath('~/films/Monty Python')
>>> p.expanduser()
PosixPath('/home/eric/films/Monty Python')

имейте в виду, что pathlib.Path (somepath) возвращает объект pathlib, но не строку. Чтобы объединить объект pathlib со строкой, используйте

str(pathlib.Path(somepath))+"somepath"

или найдите .str или аналогичный метод в pathlib документация

...