python ftp操作指令碼&常用函數,pythonftp指令碼

來源:互聯網
上載者:User

python ftp操作指令碼&常用函數,pythonftp指令碼

快速進行ftp上傳 ,下載,查詢檔案


利用Python實現ftp伺服器的操作

#!/usr/bin/python#ftp.py#this script is used to make some ftp operations more convenient#add upload and download operations  20111210 version0.1import sys,os,ftplib,socketCONST_HOST = "your ftp host or ip"CONST_USERNAME = "your username"CONST_PWD = "your password"CONST_BUFFER_SIZE = 8192COLOR_NONE = "\033[m"COLOR_GREEN = "\033[01;32m"COLOR_RED = "\033[01;31m"COLOR_YELLOW = "\033[01;33m"def connect():  try:    ftp = ftplib.FTP(CONST_HOST)    ftp.login(CONST_USERNAME,CONST_PWD)    return ftp  except socket.error,socket.gaierror:    print("FTP is unavailable,please check the host,username and password!")    sys.exit(0)def disconnect(ftp):  ftp.quit()def upload(ftp, filepath):  f = open(filepath, "rb")  file_name = os.path.split(filepath)[-1]  try:    ftp.storbinary('STOR %s'%file_name, f, CONST_BUFFER_SIZE)  except ftplib.error_perm:    return False  return Truedef download(ftp, filename):  f = open(filename,"wb").write  try:    ftp.retrbinary("RETR %s"%filename, f, CONST_BUFFER_SIZE)  except ftplib.error_perm:    return False  return Truedef list(ftp):  ftp.dir()def find(ftp,filename):  ftp_f_list = ftp.nlst()  if filename in ftp_f_list:    return True  else:    return Falsedef help():  print("help info:")  print("[./ftp.py l]\t show the file list of the ftp site ")  print("[./ftp.py f filenamA filenameB]\t check if the file is in the ftp site")  print("[./ftp.py p filenameA filenameB]\t upload file into ftp site")  print("[./ftp.py g filenameA filenameB]\t get file from ftp site")  print("[./ftp.py h]\t show help info")  print("other params are invalid")def main():  args = sys.argv[1:]  if len(args) == 0:    print("Params needed!")    sys.exit(0)  ftp = connect()  if args[0] == "p":    f_list = args[1:]    for up_file in f_list:      if not os.path.exists(up_file):        print(("UPLOAD: %s "+COLOR_RED+"FAILED"+COLOR_NONE+"  :file not exist")%up_file)        continue      elif not os.path.isfile(up_file):        print(("UPLOAD: %s "+COLOR_RED+"FAILED"+COLOR_NONE+"  :%s is not a file")%(up_file,up_file))        continue      if upload(ftp, up_file):        print(("UPLOAD: %s "+COLOR_GREEN+"SUCCESS"+COLOR_NONE)%up_file)      else:        print(("UPLOAD: %s "+COLOR_RED+"FAILED"+COLOR_NONE)%up_file)  elif args[0] == "g":    f_list = args[1:]    for down_file in f_list:      if not find(ftp,down_file):        print(("DOWNLOAD: %s "+COLOR_RED+"FAILED"+COLOR_NONE+"  :%s is not in the ftp site")%(down_file,down_file))        continue      if download(ftp, down_file):        print(("DOWNLOAD: %s "+COLOR_GREEN+"SUCCESS"+COLOR_NONE)%down_file)      else:        print(("DOWNLOAD: %s "+COLOR_RED+"FAILED"+COLOR_NONE)%down_file)  elif args[0] == "l":    list(ftp)  elif args[0] == "f":    f_list = args[1:]    for f_file in f_list:      if find(ftp,f_file):        print(("SEARCH: %s "+COLOR_GREEN+"EXIST"+COLOR_NONE)%f_file)      else:        print(("SEARCH: %s "+COLOR_RED+"NOT EXIST"+COLOR_NONE)%f_file)  elif args[0] == "h":    help()  else:    print("args are invalid!")    help()  disconnect(ftp)if __name__ == "__main__":  main()

常用函數:

用手冊查看,以下只是簡略,因為沒用用到,[待整理]:

login(user='',passwd='', acct='') 登入到FTP 伺服器,所有的參數都是可選的
pwd()                    當前工作目錄
cwd(path)                把當前工作目錄設定為path
dir([path[,...[,cb]])    顯示path 目錄裡的內容,可選的參數cb 是一個回呼函數,會被傳給retrlines()方法
nlst([path[,...]) 與dir()類似,但返回一個檔案名稱的列表,而不是顯示這些檔案名稱
retrlines(cmd [, cb]) 給定FTP 命令(如“RETR filename”),用於下載文字檔。可選的回呼函數cb 用於處理檔案的每一行
retrbinary(cmd, cb[,bs=8192[, ra]]) 與retrlines()類似,只是這個指令處理二進位檔案。回呼函數cb 用於處理每一塊(塊大小預設為8K)下載的資料。
storlines(cmd, f) 給定FTP 命令(如“STOR filename”),以上傳文字檔。要給定一個檔案對象f
storbinary(cmd, f[,bs=8192]) 與storlines()類似,只是這個指令處理二進位檔案。要給定一個檔案對象f,上傳塊大小bs 預設為8Kbs=8192])
rename(old, new) 把遠程檔案old 改名為new
delete(path) 刪除位元於path 的遠程檔案
mkd(directory) 建立遠程目錄


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.