詳解Python下ftp上傳文件linux服務(wù)器
模塊介紹:
from ftplib import FTP ftp = FTP() #設(shè)置變量 ftp.set_debuglevel(2) #打開調(diào)試級別2 顯示詳細信息 ftp.connect("IP", "port") #連接ftp, IP和端口 ftp.log("user", "password") #連接的用戶名、密碼 ftp.cwd(pathname) #設(shè)置FTP當前操作的路徑 ftp.dir() #顯示目錄下的文件信息 ftp.nlst() #獲取目錄下的文件 ftp.mkd(pathname) #新建遠程目錄 ftp.pwd() #返回當前所在位置 ftp.rmd(dirname) #刪除遠程目錄 ftp.delete(filename) #刪除遠程文件 ftp.rename(from_name, to_name) #修改文件名 ftp.storbinaly("STOR filename.txt", file_handel, bufsize) # 上傳目標文件 ftp.retrbinaly("RETR filename.txt", file_handel, bufsize) # 上傳FTP文件
功能實現(xiàn):
ftp.dir() 能顯示目錄下的文件信息,考慮到要分別對文件夾個數(shù)和文件數(shù)目進行統(tǒng)計,文件夾下存在文件夾和文件嵌套;將dir()后的目錄信息放入列表,對列表進行操作;進入子文件夾后進行遞歸調(diào)用操作。
# -*- coding: utf-8 -*- from ftplib import FTP ftp = FTP() ftp.connect('132.121.xx.xxx', 'xx909') ftp.login('crmyun_xxx', 'wyjjjjxJ') sum1 = 0 sum2 = 0 value = 0 def search_file(start_dir): ftp.cwd(start_dir) print ftp.pwd() dir_res = [] ftp.dir('.', dir_res.append) #對當前目錄進行dir(),將結(jié)果放入列表 for i in dir_res: if i.startswith("d"): global sum1 sum1 += 1 search_file(ftp.pwd()+"/"+i.split(" ")[-1]) ftp.cwd('..') else: global sum2, value sum2 += 1 val = i.split(" ")[-1] value += ftp.size(val) if ftp.pwd().endswith('/'): # print ftp.pwd()+val+" "+str(ftp.size(val))+" B" #打印出每個文件路徑和大小 pass else: # print ftp.pwd()+"/"+val+" "+str(ftp.size(val))+" B" pass def sum_file(file_path): search_file(file_path) print "folder number is "+str(sum1)+", file number is "+str(sum2)+", Totle size is "+str(value)+" B" if __name__ == '__main__': sum_file("/apps/crmyun/crmyun_755")
展示結(jié)果:
完整上傳程序
Python中默認安裝的ftplib模塊定義了FTP類,其中函數(shù)有限,可用來實現(xiàn)簡單的ftp客戶端,用于上傳或下載文件,函數(shù)列舉如下
ftp登陸連接 from ftplib import FTP #加載ftp模塊 ftp=FTP() #設(shè)置變量 ftp.set_debuglevel(2) #打開調(diào)試級別2,顯示詳細信息 ftp.connect("IP","port") #連接的ftp sever和端口 ftp.login("user","password") #連接的用戶名,密碼 print ftp.getwelcome() #打印出歡迎信息 ftp.cmd("xxx/xxx") #進入遠程目錄 bufsize=1024 #設(shè)置的緩沖區(qū)大小 filename="filename.txt" #需要下載的文件 file_handle=open(filename,"wb").write #以寫模式在本地打開文件 ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服務(wù)器上文件并寫入本地文件 ftp.set_debuglevel(0) #關(guān)閉調(diào)試模式 ftp.quit() #退出ftp ftp相關(guān)命令操作 ftp.cwd(pathname) #設(shè)置FTP當前操作的路徑 ftp.dir() #顯示目錄下所有目錄信息 ftp.nlst() #獲取目錄下的文件 ftp.mkd(pathname) #新建遠程目錄 ftp.pwd() #返回當前所在位置 ftp.rmd(dirname) #刪除遠程目錄 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()的區(qū)別
FTP.quit():發(fā)送QUIT命令給服務(wù)器并關(guān)閉掉連接。這是一個比較“緩和”的關(guān)閉連接方式,但是如果服務(wù)器對QUIT命令返回錯誤時,會拋出異常。
FTP.close():單方面的關(guān)閉掉連接,不應(yīng)該用在已經(jīng)關(guān)閉的連接之后,例如不應(yīng)用在FTP.quit()之后。
例:下載、上傳文件
# coding: utf-8 from ftplib import FTP import time import tarfile import os # !/usr/bin/python # -*- coding: utf-8 -*- from ftplib import FTP def ftpconnect(host, username, password): ftp = FTP() # ftp.set_debuglevel(2) ftp.connect(host, 21) ftp.login(username, password) return ftp #從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() #從本地上傳文件到ftp 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("113.105.139.xxx", "ftp***", "Guest***") downloadfile(ftp, "Faint.mp4", "C:/Users/Administrator/Desktop/test.mp4") #調(diào)用本地播放器播放下載的視頻 os.system('start "C:\Program Files\Windows Media Player\wmplayer.exe" "C:/Users/Administrator/Desktop/test.mp4"') uploadfile(ftp, "C:/Users/Administrator/Desktop/test.mp4", "test.mp4") ftp.quit()
- 如何把python項目部署到linux服務(wù)器
- Pycharm使用遠程linux服務(wù)器conda/python環(huán)境在本地運行的方法(圖解))
- Linux服務(wù)器上安裝Python3的兩種方式
- python 讀取Linux服務(wù)器上的文件方法
- python和shell監(jiān)控linux服務(wù)器的詳細代碼
- Linux下安裝Python3和django并配置mysql作為django默認服務(wù)器方法
- Linux服務(wù)器網(wǎng)卡流量查看方法 shell和Python各一枚
- Linux下將Python的Django項目部署到Apache服務(wù)器
- python下paramiko模塊實現(xiàn)ssh連接登錄Linux服務(wù)器
- Python?代替?xftp?從?Linux?服務(wù)器下載文件的操作方法
相關(guān)文章
python開發(fā)之tkinter實現(xiàn)圖形隨鼠標移動的方法
這篇文章主要介紹了python開發(fā)之tkinter實現(xiàn)圖形隨鼠標移動的方法,涉及Python基于tkinter繪圖的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11python實現(xiàn)ip地址查詢經(jīng)緯度定位詳解
這篇文章主要介紹了python實現(xiàn)ip地址查詢經(jīng)緯度定位詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08Python實現(xiàn)的十進制小數(shù)與二進制小數(shù)相互轉(zhuǎn)換功能
這篇文章主要介紹了Python實現(xiàn)的十進制小數(shù)與二進制小數(shù)相互轉(zhuǎn)換功能,結(jié)合具體實例形式詳細分析了二進制與十進制相互轉(zhuǎn)換的原理及Python相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-10-10Python實現(xiàn)將mp3音頻格式轉(zhuǎn)換為wav格式
這篇文章主要介紹了利用python寫了這個小工具,可以批量進行mp3音頻格式轉(zhuǎn)換為wav格式,文中的示例代碼講解詳細,感興趣的可以學(xué)習(xí)一下2022-01-01