0

快速简单:

我有以下功能,如果我指定文件名,效果很好。

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

但是当我使用带有 ftp.nlst() 的 for 循环来尝试匹配特定类型的文件时,我收到错误:

强制转换为 Unicode:需要字符串或缓冲区,找到类型

由于我不确定这是否是最好的方法,下载文件的“正确”方法是什么?

4

1 回答 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) 以获得更详细的说明。

于 2013-01-24T18:36:28.190 回答