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)
但我仍然遇到很多错误。
请查看此内容。
答案 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)
请注意,缩进在两种情况下都很重要。
答案 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)