我编写了一个 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("")
最佳答案
您的代码可能没问题。
FTP错误550是由于服务器端权限问题引起的。
此错误意味着“未采取请求的操作”。文件不可用(例如,找不到文件,无法访问)。',您可以发现 here on Wikipedia
如果您希望访问它,您应该联系系统管理员来纠正文件权限。
关于Python FTP下载550错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659470/