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

时间:2012-02-15 18:58:12

标签: python sockets ftp newline ftplib

我在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 个答案:

答案 0 :(得分:1)

您可以尝试发送"\r\n\r\n"而不是"\n\n"

答案 1 :(得分:1)

看起来你有一个不同的问题。当我尝试使用你的字符串sendall时,它似乎工作:

客户代码:

    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'