最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用ftplib庫實現(xiàn)ftp文件傳輸自動化全攻略

 更新時間:2026年04月23日 09:42:03   作者:科雷learning  
本文介紹了Python標(biāo)準(zhǔn)庫ftplib的使用方法,詳細(xì)描述了連接與登錄、目錄操作、文件上傳下載、文件管理、目錄列表查看等核心函數(shù),并提供了兩個實戰(zhàn)案例,幫助實現(xiàn)FTP自動化操作,需要的朋友可以參考下

大家好!在日常工作中都會使用到ftp功能,用于上傳和下載文件等,本章主要介紹Python的標(biāo)準(zhǔn)庫ftplib來實現(xiàn)FTP文件傳輸,幫助我們實現(xiàn)ftp自動化。

01 ftplib庫核心函數(shù)速查表

1?? 連接與登錄????

#非加密傳輸
from ftplib import FTP
# 創(chuàng)建FTP對象
ftp = FTP()
# 連接服務(wù)器,ftp默認(rèn)端口為21
ftp.connect(host='168.0.0.1', port=21)
# 登錄認(rèn)證,輸入正確的用戶名和密碼
ftp.login(user='your_username', passwd='your_password')
# 操作完成后,安全退出連接
ftp.quit()
#使用FTPS加密連接,加密傳輸,防止數(shù)據(jù)泄露。
from ftplib import FTP_TLS
ftps = FTP_TLS('secure.example.com')
ftps.login(user='admin', passwd='secret')
ftps.prot_p() # 啟用加密數(shù)據(jù)通道

說明:通過FTP()創(chuàng)建對象,connect方法指定服務(wù)器地址和端口建立連接,login方法輸入用戶名和密碼完成認(rèn)證,操作結(jié)束后用quit方法關(guān)閉連接,避免資源浪費。

2?? 目錄操作

# 獲取當(dāng)前所在目錄
current_dir = ftp.pwd()
print(f"當(dāng)前目錄: {current_dir}")
# 切換到目標(biāo)目錄
ftp.cwd('/remote/files')
# 在服務(wù)器上創(chuàng)建新目錄
ftp.mkd('new_folder')
# 刪除空目錄,注意目錄必須為空才能刪除成功
ftp.rmd('old_folder')

3?? 文件上傳下載

1)上傳文件

# 以二進(jìn)制模式上傳文件,適用于圖片、壓縮包等非文本文件
with open('local_file.zip', 'rb') as f:
  ftp.storbinary('STOR remote_file.zip', f)
# 以ASCII模式上傳文本文件,如txt,log,html,xml等,保證文本格式正確
with open('readme.txt', 'r') as f:
  ftp.storlines('STOR readme.txt', f)

說明:'STOR remote_file.zip'中的STOR是標(biāo)準(zhǔn)化寫法,后面跟的是要上傳的文件。

2)下載文件???????

# 以二進(jìn)制模式下載文件,將服務(wù)器文件保存到本地,第二個參事室回調(diào)函數(shù)
with open('local.zip', 'wb') as f:
  ftp.retrbinary('RETR remote.zip', f.write)
#傳輸大文件時,合理設(shè)置緩沖區(qū)大小能提升傳輸效率:
# 設(shè)置緩沖區(qū)大小為1MB,可根據(jù)實際情況調(diào)整
BUFFER_SIZE = 1024 * 1024
# 使用設(shè)置好的緩沖區(qū)大小下載大文件
with open('large_file.iso', 'wb') as f:
  ftp.retrbinary('RETR large_file.iso', f.write, blocksize=BUFFER_SIZE)
# 以文本模式下載文件,將服務(wù)器文件保存到本地
with open('local.txt', 'wb') as f:
  ftp.retrlines('RETR remote.txt', f.write)

說明:'STOR remote_file.zip'中的STOR是標(biāo)準(zhǔn)化寫法,后面跟的是要上傳的文件。

在實際使用中,下載文本文件時,可能會遇到轉(zhuǎn)換換行符失敗的情況,多行的文件下載后變?yōu)榱艘恍小?/p>

此時可以自己重寫回調(diào)函數(shù),在每一行末尾加上換行符,如下:???????

def write(line):
  f.write(line + '\n')
# 以文本模式下載文件,將服務(wù)器文件保存到本地 回調(diào)函數(shù)為自己定義的write函數(shù)
with open('local.txt', 'wb') as f:
  ftp.retrlines('RETR remote.txt', write)

4?? 文件管理

對服務(wù)器上的文件進(jìn)行管理,這些函數(shù)能滿足你的常見需求:???????

# 刪除遠(yuǎn)程服務(wù)器上的指定文件
ftp.delete('obsolete_file.txt')
# 重命名文件,方便文件整理
ftp.rename('old_name.txt', 'new_name.txt')
# 獲取文件大小,了解文件占用空間
size = ftp.size('large_file.iso')
print(f"文件大小: {size} 字節(jié)")

5?? 目錄列表

查看服務(wù)器目錄內(nèi)容,這幾種方式能讓你快速獲取文件信息:???????

# 獲取簡潔的文件列表
files = ftp.nlst()
print("目錄內(nèi)容:", files)
# 獲取詳細(xì)文件列表,直接打印到控制臺
ftp.dir()
# 解析詳細(xì)列表,獲取文件名和類型
ftp.mlsd()

6?? 其他操作???????

# 設(shè)置編碼
ftp.encoding = 'utf-8'
# 設(shè)置傳輸模式
ftp.set_pasv(True)  # 被動模式(推薦)
# 發(fā)送自定義命令
response = ftp.sendcmd('HELP')  # 獲取服務(wù)器支持的命令
print("服務(wù)器支持命令:", response)
# 獲取文件修改時間
mod_time = ftp.sendcmd('MDTM config.ini')
print(f"最后修改時間: {mod_time[4:]}")
# 設(shè)置超時時間
ftp = FTP(timeout=30)
# 異常處理示例,出現(xiàn)登錄失敗等問題時可添加重試邏輯
try:
  ftp.login(user, passwd)
except ftplib.error_temp as e:
  print(f"登錄失敗: {e}")

02實戰(zhàn)案例

案例 1:自動備份數(shù)據(jù)到FTP???????

import os
from datetime import datetime
from ftplib import FTP
def backup_site(local_dir, ftp_dir):
    # 創(chuàng)建帶時間戳的備份目錄,方便區(qū)分不同時間的備份
    timestamp = datetime.now().strftime("%Y%m%d_%H%M")
    backup_dir = f"{ftp_dir}/backup_{timestamp}"
    ftp = FTP('host地址')
    ftp.login('user', 'password')
    # 在服務(wù)器上創(chuàng)建備份目錄
    ftp.mkd(backup_dir)
    ftp.cwd(backup_dir)
    # 遍歷本地目錄,上傳所有文件
    for file in os.listdir(local_dir):
        local_path = os.path.join(local_dir, file)
        if os.path.isfile(local_path):
            with open(local_path, 'rb') as f:
                ftp.storbinary(f'STOR {file}', f)
    print(f"備份完成至: {backup_dir}")
    ftp.quit()
backup_site('dir1', '/dir2')

案例 2:定時下載日志文件

自動獲取服務(wù)器日志,便于后續(xù)分析和排查問題:???????

import schedule
import time
from ftplib import FTP
def download_logs():
    ftp = FTP('host地址')
    ftp.login('user', 'password')
    ftp.cwd('/logs')
    # 只下載今日日志,精準(zhǔn)獲取所需數(shù)據(jù)
    today = time.strftime("%Y%m%d")
    for file in ftp.nlst():
        if today in file:
            with open(file, 'wb') as f:
                ftp.retrbinary(f'RETR {file}', f.write)
    ftp.quit()
# 設(shè)置每天凌晨00:05執(zhí)行下載任務(wù)
schedule.every().day.at("00:05").do(download_logs)
while True:
    schedule.run_pending()
    time.sleep(60)

以上就是Python利用ftplib庫實現(xiàn)ftp文件傳輸自動化全攻略的詳細(xì)內(nèi)容,更多關(guān)于Python ftplib庫ftp文件傳輸自動化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python程序如何進(jìn)行保存

    python程序如何進(jìn)行保存

    在本篇文章里小編給大家整理了關(guān)于python程序保存的方法,有需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • python多線程互斥鎖與死鎖

    python多線程互斥鎖與死鎖

    這篇文章主要介紹了python多線程互斥鎖與死鎖,多線程間的資源競爭下文我們就以task1(),task2()兩個函數(shù)為例,分別將對全局變量num加一重復(fù)一千萬次循環(huán),具有一定得參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • 基于python實現(xiàn)Pycharm斷點調(diào)試

    基于python實現(xiàn)Pycharm斷點調(diào)試

    這篇文章主要介紹了基于python實現(xiàn)Pycharm斷點調(diào)試,在我們寫程序的時候,很容易遇到各種各樣的bug,然后編譯器提示程序出錯的地方。很多時候可以通過提示的信息修改程序,但是有時我們想得到更多的信息,這個時候就需要進(jìn)行斷點調(diào)試,下面我們就一起來學(xué)習(xí)ycharm斷點調(diào)試
    2022-02-02
  • python實現(xiàn)將Word文檔中的文字轉(zhuǎn)換成語音的操作步驟

    python實現(xiàn)將Word文檔中的文字轉(zhuǎn)換成語音的操作步驟

    在Python中實現(xiàn)文字轉(zhuǎn)語音(Text-to-Speech, TTS)功能,能夠廣泛應(yīng)用于多種場景,如語音助手、有聲讀物、無障礙閱讀等,本文將結(jié)合具體案例,詳細(xì)介紹如何在Python中實現(xiàn)文字轉(zhuǎn)語音功能,需要的朋友可以參考下
    2024-08-08
  • Python使用wxPython和PyMuPDF實現(xiàn)合并PDF文檔

    Python使用wxPython和PyMuPDF實現(xiàn)合并PDF文檔

    處理大量的PDF文檔可能會變得復(fù)雜和耗時,但是,使用Python編程和一些強(qiáng)大的庫,可以使這個任務(wù)變得簡單而高效,下面我們就來看看Python如何使用wxPython和PyMuPDF合并PDF文檔并自動復(fù)制到剪貼板吧
    2023-11-11
  • 詳解python-opencv 常用函數(shù)

    詳解python-opencv 常用函數(shù)

    這篇文章主要介紹了python-opencv 常用函數(shù),主要包括讀取圖像保存圖像和縮放圖像的相關(guān)知識,需要的朋友可以參考下
    2022-08-08
  • python爬取抖音視頻的實例分析

    python爬取抖音視頻的實例分析

    在本篇內(nèi)容里小編給大家整理一篇關(guān)于python爬取抖音視頻的實例分析的相關(guān)內(nèi)容,有興趣的朋友可以測試下實例內(nèi)容。
    2021-01-01
  • python3應(yīng)用windows api對后臺程序窗口及桌面截圖并保存的方法

    python3應(yīng)用windows api對后臺程序窗口及桌面截圖并保存的方法

    今天小編就為大家分享一篇python3應(yīng)用windows api對后臺程序窗口及桌面截圖并保存的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 揭秘Python?Socket網(wǎng)絡(luò)編程的7種硬核用法

    揭秘Python?Socket網(wǎng)絡(luò)編程的7種硬核用法

    Socket?不僅能做聊天室,還能干一大堆硬核操作,這篇文章就帶大家看看?Python?網(wǎng)絡(luò)編程的7種超實用玩法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • 使用Python PIL庫讀取文件批量處理圖片大小實現(xiàn)

    使用Python PIL庫讀取文件批量處理圖片大小實現(xiàn)

    這篇文章主要為大家介紹了使用Python PIL庫讀取文件批量處理圖片大小實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評論

新绛县| 巴中市| 垣曲县| 抚宁县| 龙游县| 江津市| 留坝县| 安图县| 于田县| 泰宁县| 镇平县| 昌都县| 定结县| 营口市| 神农架林区| 乌苏市| 安多县| 壶关县| 杭锦后旗| 万山特区| 周口市| 甘德县| 房产| 右玉县| 双桥区| 耒阳市| 二连浩特市| 仙游县| 聂拉木县| 遵义县| 佛山市| 永清县| 隆尧县| 石泉县| 江口县| 辽阳市| 腾冲县| 隆尧县| 台东市| 吉林省| 江孜县|