1

问题,所以我现在需要在一个数据包中发送 \n,但 python 将其视为 EOL。我如何告诉它将 \n 视为原始文本和数据包的一部分?

logcom = "LOGON\n Protocol-Version: 2.0\n App-type: Windows x86\n Operator: PC_CLIENT\n name: " + pal_user + "\n capabilities: 4\n"

我需要在一个数据包中发送所有这些,但是当数据包有多行时它会将 \n 视为 EOL,但当它只是 LOGON 时则不会\n

socket.sendall("'LOGON\n ^ SyntaxError: EOL while scanning string literal

错误^

4

2 回答 2

2

您几乎可以肯定一行中缺少一个结束引号。像这样使用它:

logcom = "LOGON\n Protocol-Version: 2.0\n App-type: Windows x86\n Operator: PC_CLIENT\n name: " + pal_user + "\n capabilities: 4\n"
socket.sendall(logcom)

如果您想在源代码中将其拆分为几行,就像您在问题中所遇到的那样,您应该用三引号这样写:

logcom = """LOGON
Protocol-Version: 2.0
App-type: Windows x86
Operator: PC_CLIENT
name: {}
capabilities: 4
""".format(pal_user)
socket.sendall(logcom)
于 2012-11-02T01:05:41.710 回答
1

如果您需要在“\n”中发送“\”,那么您需要做的就是转义字符。因此,您应该发送:

logcom = "LOGON\\n Protocol-Version: 2.0\\n App-type: Windows x86\\n Operator: PC_CLIENT\\n name: " + pal_user + "\\n capabilities: 4\\n"

如果您需要发送包含换行符的数据,我会尝试socket.send循环使用。

于 2012-11-02T00:50:27.490 回答