0

我一定做错了。

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

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

4

1 回答 1

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

这是使用shlex.quote()Python 3.3 的更强大的版本(pipes.quote()在较旧的 Python 版本上):

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来自哪里。

于 2013-01-05T08:37:31.820 回答