2013-07-22 4 views
0

Я пробовал сценарий ниже:Python FTPLIB Ошибка 530 Отказано

import os 
from ftplib import FTP 

ftp = FTP("ftpsite","myuser", "mypass") 
ftp.login() 
ftp.retrlines("LIST") 

ftp.cwd("folderOne") 
ftp.cwd("subFolder") 

listing = [] 
ftp.retrlines("LIST", listing.append) 
words = listing[0].split(None, 8) 
filename = words[-1].lstrip() 

#download the file 
local_filename = os.path.join(r"C:\example", file) 
lf = open(local_filename, "wb") 
ftp.retrbinary("RETR " + filename, lf.write, 8*1024) 
lf.close() 

Но каждый раз, когда я бегу сценарий, он говорит:

Traceback (most recent call last): 
    File "C:\User\Desktop\sample\ex.py", line 4, in <module> 
    ftp = FTP("ftpsite", "myuser", "mypass") 
    File "C:\Python27\lib\ftplib.py", line 119, in __init__ 
    self.login(user, passwd, acct) 
    File "C:\Python27\lib\ftplib.py", line 387, in login 
    resp = self.sendcmd('USER ' + user) 
    File "C:\Python27\lib\ftplib.py", line 244, in sendcmd 
    return self.getresp() 
    File "C:\Python27\lib\ftplib.py", line 219, in getresp 
    raise error_perm, resp 
error_perm: 530 Permission denied. 

Я не знаю, что 530 Отказано Значит, кто-нибудь скажет мне, что это значит?

ответ

0
  • Похоже, что ftp-сервер разрешает анонимный доступ; Вам не нужно пропустить имя пользователя, пароль.
  • Конструктор FTP принимает имя хоста (или IP), а не URL.

import sys 
import os 
from ftplib import FTP 

ftp = FTP("ftpsite.com") 
ftp.login() 
ftp.cwd("/ftp/site/directory/") 

listing = [] 
ftp.retrlines("LIST", listing.append) 
words = listing[0].split(None, 8) 
filesize = int(words[4]) 
filename = words[-1].lstrip() 

class VerboseWriter: 
    def __init__(self, lf, filesize): 
     self.progress = 0 
     self.lf = lf 
     self.filesize = filesize 
    def write(self, data): 
     self.lf.write(data) 
     self.progress += len(data) 
     sys.stdout.write('\r{}/{} ({:.1%})'.format(self.progress, self.filesize, float(self.progress)/self.filesize)) 
     sys.stdout.flush() 

#download the file 
with open(os.path.join(r"c:\example", filename), 'wb') as f: 
    ftp.retrbinary("RETR " + filename, VerboseWriter(lf, filesize).write, 8*1024) 
print 
ftp.quit() 
+0

@precy, Что произошла ошибка? – falsetru

+0

@precy В моем коде нет 'файла', но' filename'. Измените 'файл' на' filename' и повторите попытку. – falsetru

+0

спасибо, что это работает! он уже загружает файл. Не возражаете, если я задам другой вопрос? – user

Смежные вопросы