使用Python从FTP下载特定文件
简单明了:
我有一个函数,如果我指定文件名,它运行得很好。
import os
import ftplib
def ftpcon(self, host, port, login, pwd, path):
ftp = ftplib.FTP()
ftp.connect(host, port, 20)
try:
ftp.login(login, pwd)
ftp.cwd(path)
for files in ftp.nlst():
if files.endswith('.doc') or files.endswith('.DOC'):
ftp.retrbinary('RETR ' + files, open(file, 'wb').write)
print files
但是当我用for循环和ftp.nlst()来尝试匹配特定类型的文件时,我收到了这个错误:
强制转换为Unicode时出错:需要字符串或缓冲区,发现的类型不对
因为我不确定这是不是最好的方法,下载文件的“正确”方式是什么呢?
1 个回答
0
你可以试试:
from ftplib import FTP
server = FTP("ip/serveradress")
server.login("user", "password")
server.retrlines("LIST") # Will show a FTP content list.
server.cwd("Name_Of_Folder_in_FTP_to_browse_to") # browse to folder containing your file for DL
然后:
server.sendcmd("TYPE i") # ready for file transfer
server.retrbinary("RETR %s"%("FILENAME+EXT to DL"), open("DESTINATIONPATH+EXT", "wb").write) # this will transfer the selected file...to selected path/file
我相信这样做是正确的……
你可以把 server.set_debuglevel(0) 设置成 (1) 或 (2),这样在登录到服务器时会有更详细的描述。