『壹』 python查看FTP是否能連接成功的方法
#!/usr/local/bin/python
#-*- coding: UTF-8 -*-
####################################################################
# python 查看FTP是否能連接成功
####################################################################
#import ftplib
##f = ftplib.FTP('192.168.100.214')
##f.login('GDATA_MEM','123456')
##ftplib.set_debuglevel(2) #打開調試級別2,顯示詳細信息
#data=ftplib.FTP('127.0.0.1','admin','123456')
#print data
from ftplib import FTP
def ftp_open(host='',user='',passwd=''): #打開FTP
try:
ftp=FTP()
) #打開調試級別2,顯示詳細信息
) #連接
data=ftp.login(user,passwd) #登錄,如果匿名登錄則用空串代替即可
print () #歡迎詞
#print data
return 1
except:
return 0
if __name__=='__main__':
if ftp_open('127.0.0.1','admin','1234561'): #打開FTP
print "打開FTP成功"
else:
print "打開FTP失敗"
『貳』 用python可以對FTP伺服器上的文件直接進行壓縮碼
你的意思是在FTP伺服器上直接對文件夾壓縮打包?這個不是python可不可以的問題,這個是由FTP伺服器的許可權來決定的,一般在網路上的FTP伺服器是禁止上傳,或者更改目錄中的文件的,而你所需要的壓縮也是對文件進行操作,是不被允許的。而且FTP 的RFC中也是沒有這一項的,是不可以的。當然若你有許可權可以通過python ssh到FTP伺服器上,是可以進行任何操作的。
『叄』 Python中如何獲取FTP伺服器上的文件大小
這要看你下載用了哪個ftp庫
搜到的代碼
files = ftp.nlst()
for f in files:
print f
『肆』 python ftp模塊有支持passive off這個命令嗎
因為FTP有兩種工作模式,PORT方式和PASV方式,中文意思為主動式和被動式,詳細介紹如下:主動FTP:命令連接:客戶端>1024埠→伺服器21埠數據連接:客戶端>1024埠←伺服器20埠被動FTP:命令連接:客戶端>1024埠→伺服器21埠數據連接:客戶端>1024埠←伺服器>1024埠PORT(主動)方式的連接過程是:客戶端向伺服器的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴伺服器:「我打開了***X埠,你過來連接我」。於是伺服器從20埠向客戶端的***X埠發送連接請求,建立一條數據鏈路來傳送數據。PASV(被動)方式的連接過程是:客戶端向伺服器的FTP埠(默認是21)發送連接請求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,伺服器在命令鏈路上用PASV命令告訴客戶端:「我打開了***X埠,你過來連接我」。於是客戶端向伺服器的***X埠發送連接請求,建立一條數據鏈路來傳送數據。解決此問題的法也很簡單,關閉客戶端的PASV方式,強制其用PORT方式訪問伺服器,登錄FTP伺服器後用passive命令關閉客戶端的PASV方式,如下:ftp>passivePassivemodeoff.ftp>passive(再次運行命令可打開)Passivemodeon.
『伍』 python,如何下載FTP上的文件
importftplib,socket
defconnect():
CONST_HOST="xxxx.xxxx.xxx"
CONST_USERNAME="xxxxx"
CONST_PWD="xxxxxxx"
try:
ftp=ftplib.FTP(CONST_HOST)
ftp.login(CONST_USERNAME,CONST_PWD)
returnftp
exceptsocket.error,socket.gaierror:
print("FTPisunavailable,pleasecheckthehost,usernameandpassword!")
sys.exit(0)
defdisconnect(ftp):
ftp.quit()
defdownload(ftp,filename):
#預定義每次寫文件的buffer
CONST_BUFFER_SIZE=8192
f=open(filename,"wb").write
try:
ftp.retrbinary("RETR%s"%filename,f,CONST_BUFFER_SIZE)
exceptftplib.error_perm:
returnFalse
returnTrue
deffind(ftp,filename):
ftp_f_list=ftp.nlst()
iffilenameinftp_f_list:
returnTrue
else:
returnFalse
ftp=connect()
#yourfile為你想要下載的文件
iffind(ftp,'yourfile'):
download(ftp,'yourfile')
disconnect(ftp)
『陸』 如何在Python中使用FTP
from ftplip import FTP # 首先要引入 ftplib 這個庫
# 接著,這是我自定義的幾個用於操作 ftp 的函數,def 後面跟的是自定義函數名,函數體內FTP 相關的語句和函數來自上面 import 那個包,你自己體會吧:
# 初始化 FTP 連接
def ftp_open(HOST,PORT,USERNAME,PASSWORD):
ftp=FTP()
ftp.set_debuglevel(2)
ftp.connect(host=HOST,port=PORT)
ftp.login(USERNAME,PASSWORD)
return ftp
# 關閉 FTP 連接
def ftp_close(ftp):
ftp.set_debuglevel(0)
ftp.quit()
# 文件上傳函數,filename 可以是windows 格式包含全路徑的文件
def ftp_up(ftp,filename):
#print(ftp.getwelcome())
#ftp.cwd('xxx/www')
file_handler=open(filename,'rb')
ftp.storbinary('STOR %s' % os.path.basename(filename),file_handler)
file_handler.close()
print('FTP up OK.')
# 文件下載函數,filename 可以是windows 格式包含全路徑的文件
def ftp_down(ftp,filename):
#print(ftp.getwelcome())
#ftp.cwd('xxx/www')
file_handler=open(filename,'wb')
ftp.retrbinary('RETR %s' % os.path.basename(filename),file_handler)
file_handler.close()
print('FTP down OK.')
『柒』 python如何創建FTP目錄
直接使用ftplib就可以實現,其中有一個nlst功能用於查詢目錄,cwd用於改變目錄,還有一個size功能。你這邊只需要保留一個目錄的鏡像。如果發現有目錄差異,或者是文件大小發生變更,就用retrbinary進行文件同步就可以。
『捌』 python,如何下載FTP上指定時間段內的文件
importftplib
path='c:/user/pcwuyu/desktop/1c0/'
l=[]
defls_filter(line):
ll=line.split()
ifll[5]=='Jan'andll[6]=='9'andll[7]>'14:30'andll[7]<'15:30':
ifll[8]!='.'andll[8]!='..':
l.append(ll[8])
returnll[8]
ftp=ftplib.FTP('127.0.0.1')
ftp.login('root','password')
ftp.cwd('/mnt/1c0')
ftp.set_pasv(False)
fs=ftp.retrlines('LIST',ls_filter)
foriinl:
ftp.retrbinary('RETR'+i,open(path+i,'wb').write)
ftp.quit()
一個簡單的例子,下載1月9日14:30~15:30的文件