from ftplib import FTP # 加載ftp模塊
ftp = FTP() # 獲取FTP對象
ftp.set_debuglevel(2) # 打開調試級別2,顯示詳細信息
ftp.connect('IP', PORT) # 連接ftp,server和端口
ftp.login('user', 'password') # 登錄用戶
print(ftp.getwelcome()) # 打印歡迎信息
ftp.cmd('xxx/xxx') # 進入遠程目錄
bufsize = 1024 # 設置緩存區大小
filename='filename.txt' # 需要下載的文件
file_handle=open(filename, 'wb').write # 以寫的模式在本地打開文件
file.retrbinaly('RETR filename.txt', file_handle,bufsize) # 接收服務器上文件並寫入本地文件
ftp.set_debuglevel(0) # 關閉調試模式
ftp.quit # 退出ftp
ftp相關的命令操作
ftp.cwd(pathname) # 設置FTP當前操作的路徑
ftp.dir() # 顯示目錄下所有目錄的信息
ftp.nlst() # 獲取目錄下的文件
ftp.mkd(pathname) # 新建遠程目錄
ftp.rmd(dirname) # 刪除遠程目錄
ftp.pwd() # 返回當前所在位置
ftp.delete(filename) # 刪除遠程文件
ftp.rename(fromname, toname) #將fromname改爲toname
ftp.storbinaly('STOR filename.txt',file_handel,bufsize) # 上傳目標文件
ftp.retrbinary('RETR filename.txt',file_handel,bufsize) # 下載FTP文件
FTP.quit()與FTP.close()的區別
FTP.quit():發送QUIT命令給服務器並關閉掉連接。這是一個比較“緩和”的關閉連接的方式,但是如果服務器對QUIT命令返回錯誤時,則會拋出異常。
FTP.close():單方面的關閉掉連接,不應該用在已經關閉的連接之後,例如不應用在FTP.quit()之後.
例:
from ftplib import FTP
import time
import tarfile
from ftplib import FTP
def ftpconnect(host, username, password)
ftp = FTP()
ftp.connect(host, 21)
ftp.login(username, password)
return ftp
def downloadfile(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, 'wb')
ftp.retrbinary('RETR'+remotepath, fp.write, bufsize)
ftp.set_debuglevel(0)
fp.close()
def uploadfile(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, 'rb')
ftp.storbinary('STOR'+remotepath, fp, bufsize)
ftp.set_debuglevel(0)
fp.close()
if __name__ == '__main__':
ftp = ftpconnect("******", "***", "***")
downloadfile(ftp, "***", "***")
uploadfile(ftp, "***", "***")
ftp.quit()