Python sendall包含变量和encode()

时间:2013-01-05 07:24:29

标签: python python-3.x

我一定是做错了。

s.sendall((str("mkd /" + folder.decode() + "/New Folder/ \r\n")).encode())

有没有更好的方式来写这个?

1 个答案:

答案 0 :(得分:1)

s.sendall(b"mkd '/" + folder + b"/New Folder/'\r\n")

这是一个更强大的版本,使用Python 3.3中的shlex.quote()(旧版Python上的pipes.quote()):

cmd = "mkd {}".format(shlex.quote(posixpath.join(folder, "New Folder")))
s.sendall(cmd.encode() + b"\r\n") # send as utf-8

后者假设folder是Unicode字符串。如果folder是一个字节对象,则不应盲目使用folder.decode(),因为无法保证folder被编码为utf-8。是否可以使用os.fsdecode()对其进行解码取决于folder的来源。