Python FTP下载550错误

时间:2014-02-09 13:16:12

标签: python ftp ftplib

我编写了一个ftp抓取工具来下载特定文件。它一直工作,直到找到它想要下载的特定文件,然后它抛出此错误:

ftplib.error_perm: 550

该文件存在于我的下载文件夹中,但文件大小为0 kb。 我是否需要转换某些内容才能下载? 我可以访问ftp手册并且没有任何问题地下载文件,所以不要认为它是登录部分(除非有不同的登录方式吗?)

这是我的代码:

import ftplib
import re
import os


class Reader:

def __init__(self):

    self.data = ""

def __call__(self,s):

    self.data += s + "\n"

ftp = ftplib.FTP("my_ftp_server")

ftp.login()

r = Reader()

ftp.dir(r)

def get_file_list(folder):



    r = Reader()

    ftp.dir(folder, r)

    print ("Reading folder",folder)


    global tpe
    global name
    for l in r.data.split("\n"):

        if len(l) > 0:
            vars = re.split("[ ]*", l)
            tpe = vars[2]
            name = vars[3]
        if tpe == "<DIR>":

            get_file_list( folder + "/" + name )
        else:
            print (folder + name)
        for name in folder:
            if vars[3].endswith(('501.zip','551.zip')):
                if os.path.exists('C:\\download\\' + vars[3]) == False:
                    fhandle = open(os.path.join('C:\\download\\', vars[3]), 'wb')
                    print ('Getting ' + vars[3])
                    ftp.retrbinary('RETR ' + vars[3], fhandle.write)
                    fhandle.close()
                elif os.path.exists(('C:\\download\\' + vars[3])) == True:
                    print ('File ', vars[3], ' Already Exists, Skipping Download')

print("-"*30)
print ("Fetching folders...")

get_file_list("")

1 个答案:

答案 0 :(得分:0)

您的代码可能没问题。

FTP错误550是由服务器端的权限问题引起的。

此错误表示“未采取请求的操作”。文件不可用(例如,找不到文件,没有访问权限。),您可以找到here on Wikipedia

如果您希望有权访问它,则应联系sysadmin以纠正文件权限。