我编写了一个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("")
答案 0 :(得分:0)
您的代码可能没问题。
FTP错误550是由服务器端的权限问题引起的。
此错误表示“未采取请求的操作”。文件不可用(例如,找不到文件,没有访问权限。),您可以找到here on Wikipedia
如果您希望有权访问它,则应联系sysadmin以纠正文件权限。