【问题标题】:ftplib, socket.sendall() ingores newline characterftplib, socket.sendall() 输入换行符
【发布时间】:2012-02-15 18:58:11
【问题描述】:

我在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

如何使用换行符正确更新文件?

【问题讨论】:

    标签: python sockets ftp newline ftplib


    【解决方案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'
    

    【讨论】:

    • 你是对的。问题是用于我的测试的服务器,它在 Linux/Unix 下工作。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多