简体   繁体   English

Python FTPLIB错误530权限被拒绝

[英]Python FTPLIB error 530 Permission Denied

I've tried the script below: 我已经尝试过以下脚本:

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()

But everytime I run the script, it says: 但是每次我运行脚本时,都会说:

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.

I don't know what 530 Permission Denied means.Can anyone tell me what does that means? 我不知道530许可被拒绝是什么意思,有人可以告诉我这是什么意思吗?

  • It seems like the ftp server allows anonymous access; 似乎ftp服务器允许匿名访问。 You don't need pass username, password. 您不需要传递用户名,密码。
  • FTP constructor accept hostname(or IP), not URL. 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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM