我一定是做错了。
s.sendall((str("mkd /" + folder.decode() + "/New Folder/ \r\n")).encode())
有没有更好的方式来写这个?
答案 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
的来源。