2023年6月30日 星期五

FTP上傳檔案小工具


 from ftplib import FTP
import os
#建立一個FTP上傳腳本
class Myftp:
    def __init__(self):
        #建立FTP物件
        self.ftp=FTP()
        #打開調適級別2 顯示詳細信息
        self.ftp.set_debuglevel(1)

       
    def connect(self,IP,port):
        '連接ftp,IP和端口, 連接成功時顯示歡迎'
        self.ftp.connect(IP,port)
        print(self.ftp.getwelcome())
       
    def login(self,user,password):
        self.ftp.login(user=user,passwd=password,acct='my_account')
   
    def upload(self,local_file,remote_file):
       
        self.local=local_file #本地目錄
        self.remote=remote_file#遠端目錄
        #遠端目錄,必須是伺服器上存在且有權限訪問的目錄
        if not os.path.exists(self.local):
            #本地目錄不存在
            raise FileNotFoundError(f'本地檔案{self.local}沒有找到')
        with open(self.local,'rb')as file:
            self.ftp.storbinary('STOR ' + self.remote,file)
         
    def disconnect(self):
        '斷開連接'
        self.ftp.quit()

wow=Myftp()  #設定實例物件
wow.connect(IP='127.0.0.1',port=35353) #連接到這個IP和 port
wow.login(user='qoo',password='0000')  #登入用帳號密碼
local_file_path='C:\\Users\\K\\OneDrive\\桌面\\leetcode\\新增資料夾\\test1.txt'
remote_file='ItWork.txt'
wow.upload(local_file=local_file_path,remote_file=remote_file)  #已2進制的方式讀取loacl_file_path, 然後上傳到遠端目錄

wow.disconnect()

----------------終端機
*resp* '220 pyftpdlib 1.5.7 ready.' *welcome* '220 pyftpdlib 1.5.7 ready.' 220 pyftpdlib 1.5.7 ready. *cmd* 'USER qoo' *resp* '331 Username ok, send password.' *cmd* 'PASS ****' *resp* '230 Login successful.' *cmd* 'TYPE I' *resp* '200 Type set to: Binary.' *cmd* 'PASV' *resp* '227 Entering passive mode (127,0,0,1,196,39).' *cmd* 'STOR ItWork.txt' *resp* '125 Data connection already open. Transfer starting.' *resp* '226 Transfer complete.' *cmd* 'QUIT' *resp* '221 Goodbye.' PS C:\Users\K\OneDrive\桌面\leetcode\新增資料夾>



















































標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁