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
кажется, прячется от вас, делая вид, что в файле нет записей.