python3 ftplib模塊連接FTP


from ftplib import FTP_TLS
import os
import re


class MyFtp(FTP_TLS):
    """繼承FTP類"""
    def dirs(self, *args):
        """my dirs"""
        self.encoding = 'GB18030'
        cmd = 'LIST'
        if args[-1:] and not isinstance(args[-1], str):
            args, func = args[:-1], args[-1]
        for arg in args:
            if arg:
                cmd = cmd + (' ' + arg)
        files = []
        self.retrlines(cmd, files.append)
        l_files = [file.split(" ")[-1] for file in files]
        return [file for file in l_files if file != "." and file != ".."]
ftps = MyFtp()
# ftps.set_debuglevel(2)
ftps.connect("172.25.22.1",21)           #FTP服務IP和端口
ftps.login("user","123456")              #FTP用戶密碼
ftps.prot_p()                            #繼承了MyFtp類中的prot_p方法,目的是為了解決某些開啟了安全SSL/TSL而連接不上的問題
ftps.set_pasv(1)                         #pasv(1)為被動模式,pasv(0為主動模式)
ftps.encoding = 'GB18030'                #防止中文亂碼
ftps.retrlines('LIST')
# a = ftps.dirs("/")
# print(a)
ftps.close()

 

也可以用更簡單的方法:

import os
import re
import ftplib
ftps = ftplib.FTP_TLS()
ftps.connect("172.25.22.1",21)
ftps.login("user","123456")
ftps.prot_p()
ftps.encoding="GB18030"
ftps.retrlines('LIST')
ftps.close()

 

取出路徑下的文件名

import os
import re
import ftplib
ftps = ftplib.FTP_TLS()
ftps.connect("172.25.22.1",21)
ftps.login("user","123456")
ftps.prot_p()
ftps.encoding="GB18030"
ftps.retrlines('LIST')
ftps.close()
f1 = []
for file in files:
    a = re.split("[ ]+",file)
    f1.append(' '.join(a[8:]))
print(f1)
ftps.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM