使这一行pylint正确

时间:2014-05-15 06:18:28

标签: python python-2.7

MS = 'M-SEARCH * HTTP/1.1\r\nHOST: %s:%d\r\nMAN: "ssdp:discover"\r\nMX: 2\r\nST: ssdp:all\r\n\r\n' % (SSDP_ADDR, SSDP_PORT)

在使用PEP8检查此行时,会显示“行太长”

所以我这样打破它:

MS = 'M-SEARCH * 
      HTTP/1.1\r\n
      HOST: %s:%d\r\n
      MAN: "ssdp:discover"\r\n
      MX: 2\r\n
      ST: ssdp:all\r\n\r\n
      ' % (SSDP_ADDR, SSDP_PORT)

但我仍然遇到很多错误。

请查看此内容。

5 个答案:

答案 0 :(得分:2)

使用Python的多行字符串:

MS = """M-SEARCH * 
      HTTP/1.1\r\n
      HOST: %s:%d\r\n
      MAN: "ssdp:discover"\r\n
      MX: 2\r\n
      ST: ssdp:all\r\n\r\n
      """ % (SSDP_ADDR, SSDP_PORT)

但请注意,这会改变缩进并添加额外的换行符(可能会或可能不会影响您的用例)。

答案 1 :(得分:1)

在未终止的括号/括号内使用python的隐式字符串连接和隐式行连接...:

MS = ('M-SEARCH * '
      'HTTP/1.1\r\n'
      'HOST: %s:%d\r\n'
      'MAN: "ssdp:discover"\r\n'
      'MX: 2\r\n'
      'ST: ssdp:all\r\n\r\n') % (SSDP_ADDR, SSDP_PORT)

请注意,有些(including Guido)似乎不喜欢隐式字符串连接。如果您属于该类别,则可以使用显式连接(只需在必要时添加+)。这样做没有真正的危害 - 字节码优化器会优化连接,就像隐式连接一样。

答案 2 :(得分:0)

你不能打破这样的字符串。使用反斜杠:

MS = 'M-SEARCH * \
HTTP/1.1\r\n \
HOST: %s:%d\r\n \
MAN: "ssdp:discover"\r\n \
MX: 2\r\n \
ST: ssdp:all\r\n\r\n \
' % (SSDP_ADDR, SSDP_PORT)

或使用三重引号。这将添加换行符,以便您可以删除字符串中的最后一个\n

MS = """M-SEARCH * 
HTTP/1.1\r
HOST: %s:%d\r
MAN: "ssdp:discover"\r
MX: 2\r
ST: ssdp:all\r\n\r
""" % (SSDP_ADDR, SSDP_PORT)

请注意,缩进在两种情况下都很重要。

如果您正在生成HTTP请求,那么有很多库。为什么不使用一个?查看requestsurllib2urllib3

答案 3 :(得分:0)

这是我认为现在可以解决的解决方案。将线条拆分成字符串。

MS = 'M-SEARCH *' + \
  'HTTP/1.1\r\n' + \
  'HOST: %s:%d\r\n' + \
  'MAN: "ssdp:discover"\r\n' + \
  'MX: 2\r\n' + \
  'ST: ssdp:all\r\n\r\n' % (SSDP_ADDR, SSDP_PORT)

答案 4 :(得分:0)

括号内的

是另一种解决方案 我广泛使用它来解决这个长线问题

包括@mgilson建议包括+显式

MS = ("M-SEARCH *" +
  "HTTP/1.1\r\n" +
  "HOST: %s:%d\r\n" +
  "MAN: \"ssdp:discover\"\r\n" +
  "MX: 2\r\n" +
  "ST: ssdp:all\r\n\r\n") % (SSDP_ADDR, SSDP_PORT)