![](/img/trans.png)
[英]"ftplib.error_perm: 550 Operation not permitted" when trying to download the second file from the same directory using FTP_TLS
[英]When trying to download files using a Python FTP_TLS object getting AttributeError?
from ftplib import FTP_TLS
import socket
import ssl
class tyFTP(FTP_TLS):
def __init__(self, host='', user='', passwd='', acct='', keyfile=None, certfile=None, timeout=60):
FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, timeout)
def connect(self, host='', port=0, timeout=-999):
if host != '':
self.host = host
if port > 0:
self.port = port
if timeout != -999:
self.timeout = timeout
try:
self.sock = socket.create_connection((self.host, self.port), self.timeout)
self.af = self.sock.family
self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ssl_version=ssl.PROTOCOL_TLSv1)
self.file = self.sock.makefile('rb')
self.welcome = self.getresp()
except Exception as e:
print e
return self.welcome
# FTP_ROOT_PATH = "/outgoing/"
FTP_SITE = "..."
# FTP_SITE = "..."
FTP_PORT = 990
UPLOAD = {
"USERNAME": "...",
"PASSWORD": "..."
}
DOWNLOAD = {
"USERNAME": "...",
"PASSWORD": "..."
}
remote_file = "..."
local_filepath = "..."
server = tyFTP()
server.connect(host=FTP_SITE, port=990)
server.login(user=DOWNLOAD['USERNAME'], passwd=DOWNLOAD['PASSWORD'])
server.prot_p()
server.retrbinary("RETR " + remote_file, open(local_filepath, "wb").write)
我已經從這篇Python FTP隱式TLS連接問題中復制了一些代碼。 我對代碼中發生的所有事情都有很好的理解,但完全沒有錯誤。 問題是,當我調用retrbinary函數時,我可以運行所有操作,直到最后一行。 我收到錯誤:
AttributeError: 'int' object has no attribute 'wrap_socket'
完整的錯誤對話是:
File "sample.py", line 48, in <module>
server.retrbinary("RETR " + remote_file, open(local_filepath, "wb").write)
File "C:\Users\Alex\Anaconda2\lib\ftplib.py", line 718, in retrbinary
conn = self.transfercmd(cmd, rest)
File "C:\Users\Alex\Anaconda2\lib\ftplib.py", line 376, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "C:\Users\Alex\Anaconda2\lib\ftplib.py", line 712, in ntransfercmd
conn = self.context.wrap_socket(conn,
AttributeError: 'int' object has no attribute 'wrap_socket'
有沒有人對罪魁禍首是什么有任何見解?
您對超時arg(這是一個int)的使用位於此行中上下文變量的PLACE中:
FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, timeout)
應該:
FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, context, timeout)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.