Python ftplib pwd() returns 空字符串
Python ftplib pwd() returns an empty string
我正在编写一个 Python 程序,主要围绕将文件从 PC 传输到目标设备。
到目前为止,我已经为程序中的所有其他函数使用了 ftplib 包。
到目前为止,我遇到了一个其他任何设备都没有发生的问题,即 ftp.pwd()
returns 只是一个空字符串,但是当我使用 ftp.voidcmd("PWD")
- 这是与 ftp.pwd()
相同,我得到了我的工作目录。
这是与问题相关的片段,请注意,我对其他一些设备也做过同样的事情,但从未发生过:
# CONNECT TO TARGET
ftp = FTP (host)
ftp.login(username , password)
ftp.cwd("/DirName")
# DOESNT WORK
res = ftp.pwd()
print(res)
# WORKS
res = ftp.voidcmd("PWD")
print(res)
ftplib 对 PWD
命令的响应代码 return 很严格。仅当代码是 RFC 959 所要求的 257
时,ftplib 才会认为响应有效并将 return 路径。
一些不起眼的 FTP 服务器不使用 257
代码,而是使用其他一些 2xx
代码。许多 FTP 客户端是宽容的,并将处理此类响应作为有效响应。 ftplib 不是。您将不得不继续使用 FTP.voidcmd("PWD")
.
的解决方法
我正在编写一个 Python 程序,主要围绕将文件从 PC 传输到目标设备。
到目前为止,我已经为程序中的所有其他函数使用了 ftplib 包。
到目前为止,我遇到了一个其他任何设备都没有发生的问题,即 ftp.pwd()
returns 只是一个空字符串,但是当我使用 ftp.voidcmd("PWD")
- 这是与 ftp.pwd()
相同,我得到了我的工作目录。
这是与问题相关的片段,请注意,我对其他一些设备也做过同样的事情,但从未发生过:
# CONNECT TO TARGET
ftp = FTP (host)
ftp.login(username , password)
ftp.cwd("/DirName")
# DOESNT WORK
res = ftp.pwd()
print(res)
# WORKS
res = ftp.voidcmd("PWD")
print(res)
ftplib 对 PWD
命令的响应代码 return 很严格。仅当代码是 RFC 959 所要求的 257
时,ftplib 才会认为响应有效并将 return 路径。
一些不起眼的 FTP 服务器不使用 257
代码,而是使用其他一些 2xx
代码。许多 FTP 客户端是宽容的,并将处理此类响应作为有效响应。 ftplib 不是。您将不得不继续使用 FTP.voidcmd("PWD")
.