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がbytesオブジェクトの場合、utf-8としてエンコードされるfolder.decode()保証がないため、盲目的に使用しないでください。それをデコードするために使用できるfolderかどうかは、どこから来たかによって異なります。os.fsdecode()folder

于 2013-01-05T08:37:31.820 に答える