2013-07-22 6 views
0

나는 아래의 스크립트를 시도했습니다 거부 :파이썬 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() 

하지만 매번 내가 스크립트를 실행, 그것은 말한다 : 나는 530 권한이 거부 모르는

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. 

누군가 그게 무슨 뜻인지 말해 줄 수 있니?

답변

0
  • ftp 서버에서 익명 액세스를 허용하는 것처럼 보입니다. 패스 사용자 이름, 암호가 필요하지 않습니다.
  • FTP 생성자는 URL이 아닌 호스트 이름 (또는 IP)을 허용합니다.

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, 내 코드에는'file'이 없지만'filename'이 있습니다. 'file'을'filename'으로 바꾸고 다시 시도하십시오. – falsetru

+0

덕분에 작동합니다! 이미 파일을 다운로드합니다. 다른 질문을해도 될까요? – user