带有注释的Python .netrc文件错误

时间:2015-02-26 23:06:34

标签: python .netrc

我有以下内容:

import netrc

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

我的.netrc文件中有以下行:

machine "### comment"

我收到以下错误:

  

netrc.NetrcParseError:错误的关注者令牌“评论”'

我可以删除评论,但我需要在其他无法编辑.netrc文件的帐户中使用此功能,那么该怎么办?

2 个答案:

答案 0 :(得分:1)

你的行不需要

machine ftp.example.com login user password pw

如果你开始使用'机器'你至少需要一个机器名,然后才能注释掉该行的其余部分,否则netrc无法解析该行。

答案 1 :(得分:0)

我相信它在解析行时不会将引号与其他非空白字符区别开来。所以这个:

machine "### comment"

变成令牌machine"###comment"。在那之后,它找不到更多的令牌,并且会掉下来。

不幸的是,由于那里有很多netrc解析器,并且它们可能都对边缘情况有不同的处理,除非编写自己的解析器,否则您甚至无法真正解决此问题,除非您可以让自己喜欢的工具使用该解析器(卷发,点子等)。

除了注释之外,Python netrc模块显然会将# machine ...(带空格)识别为#machine ...(无空格)作为注释行。后者会导致诸如netrc.NetrcParseError: bad toplevel token '...'之类的各种错误,而pip之类的工具似乎对您隐藏了,并假装文件中没有条目。

相关问题