ftplib,socket.sendall() 忽略换行符

0 投票
2 回答
4719 浏览
提问于 2025-04-17 13:06

我在ftplib里写了一个叫做append_line()的函数(是基于storelines()写的):

def append_line(self, cmd, string):
    self.voidcmd('TYPE A')
    conn = self.transfercmd(cmd)
    conn.sendall(string)
    conn.close()

    return self.voidresp()

当我调用这个函数时:

ftp.append_line("APPE " + "Text.dat", "This is my string\n\n")

它会把字符串添加到指定的文件里,但却忽略了换行符。所以,socket.sendall没有处理字符\n

我该怎么做才能正确地在文件中添加换行符呢?

2 个回答

1

你可以试着发送 "\r\n\r\n",而不是 "\n\n"

1

看起来你遇到了另一个问题。当我尝试用你的字符串发送所有数据时,似乎是正常工作的:

客户端代码:

    from socket import *
    s=socket(AF_INET, SOCK_STREAM)
    s.connect(("localhost", 6789))
    string = "This is my string\n\nAFTER_IT"
    s.sendall(string)

服务器代码:

    from socket import *
    s=socket(AF_INET, SOCK_STREAM)
    s.bind(("", 6789))
    s.listen(8)
    (c, a) = s.accept()
    data=c.recv(1000)
    data # Displays 'This is my string\n\nAFTER_IT'

撰写回答