我编写了一个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("")发布于 2014-02-10 02:22:16
你的代码可能没问题。
FTP错误550是由服务器端的权限问题引起的。
此错误意味着“未采取所请求的操作。文件不可用(例如,未找到文件,没有访问)。”,您可以找到在维基百科上。
如果您希望能够访问它,则应该与sysadmin联系,以纠正文件权限。
https://stackoverflow.com/questions/21659470
复制相似问题