Python .netrc ошибка в файле с комментарием

У меня есть следующее:

import netrc

machine = 'ftp.example.com'
auth = netrc.netrc().authenticators(machine)

У меня есть следующая строка в моем .netrc файл:

machine "### comment"

Я получаю следующую ошибку:

netrc.NetrcParseError: маркер плохого подписчика "комментарий"

Я могу удалить комментарий, но мне нужно использовать это в других аккаунтах, где я не могу редактировать .netrc файл, так что тут делать?

1 ответ

Разве ваша линия не должна быть

machine ftp.example.com login user password pw

Если вы начинаете строку с 'machine', вам, по крайней мере, нужно имя машины, прежде чем вы закомментируете оставшуюся часть строки, иначе netrc не сможет разобрать строку.

Я считаю, что это анализ строки без обработки кавычек в отличие от других непробельных символов. Итак, это:

machine "### comment"

превращается в жетоны machine, "###, а также comment", После этого он не может найти больше жетонов, и он теряет смысл.

К сожалению, поскольку существует множество синтаксических анализаторов netrc, и все они могут по-разному обрабатывать крайние случаи, вы даже не сможете решить эту проблему, написав свой собственный анализатор, если вы не сможете использовать этот анализатор в ваших любимых инструментах (curl, pip)., и т.д.).

Как еще в стороне от комментариев, по-видимому, Python netrc модуль распознает # machine ... (с пробелом) но не #machine ... (без пробела) в качестве строки комментария. Последнее приводит к различным ошибкам, таким как netrc.NetrcParseError: bad toplevel token '...'какие инструменты нравятся pip кажется, прячется от вас, делая вид, что в файле нет записей.

Другие вопросы по тегам