python 专题十 FTP 操作

下载数据

 1> 以ASCII模式下载文件
  from ftplib import FTP
  localfile = open('filename','wt')
  f = FTP('remoteADDR')
  f.login('username','passwd') #为空表示匿名登录
  f.retrlines('RETR remotefile',localfile.write)
 

以二进制模式下载文件

  from ftplib import FTP
  localfile = open('filename','wb')
  f = FTP('remoteADDR')
  f.login('username','passwd') #为空表示匿名登录
  f.retrbinary('RETR remotefile',localfile.write)
 

以高级二进制模式下载文件

  from ftplib import FTP
  localfile = open('filename','wb')
  f = FTP('remoteADDR')
  f.login('username','passwd') #为空表示匿名登录
  f.voidcmd('TYPE I') #表示以映像或二进制的模式传输
  datasock,estsize = f.ntransfercmd('RETR remotefile') #返回一个tuple,包括数据的socket和数据的大小
  while True:
      buf = datasock.recv(2048)
      if not buf:
          break
      localfile.write(buf)
  datasock.close()
  f.voidresp() #可以获得FTP服务器的响应,如果发现任何错误,就会报错
  localfile.close()
 

上传数据

  上传是通过两个基本的函数来实现的:storbinary()和storlines(),这两个基本函数分别调用一个指令,以及一个文件类型的对象来执行,其中storbinary()调用的是该对象的read(),而storlines()调用的是readlines()。这是跟下载函数不一样的,因为在下载中提供的是它本身的函数。

以二进制模式上传文件

  from ftplib import FTP
  localfile = open('filename','rb')
  f = FTP('remoteADDR')
  f.login('username','passwd') #为空表示匿名登录
  f.storbinary('stor remotefile',localfile)

以文本模式上传文件

  from ftplib import FTP
  localfile = open('filename','rt')
  f = FTP('remoteADDR')
  f.login('username','passwd') #为空表示匿名登录
  f.storlines('stor remotefile',localfile)

 以高级二进制模式上传

  from ftplib import FTP
  localfile = open('filename','rb')
  f = FTP('remoteADDR')
  f.login('username','passwd') #为空表示匿名登录
  f.voidcmd('TYPE I') #表示以映像或二进制的模式传输
  datasock,esize = f.ntransfercmd('STOR localfile')  #esize值为None,可自行设值
  while True:
   buf = fd.read(2048)
   if not len(buf):
    break
   datasock.sendall(buf)
  datacock.close()
  localfile.close()
  f.voidresp()
  f.quit()

其它的操作

 from ftplib import FTP
 f = FTP('remoteADDR')
 f.login('username','passwd')
 1> 更改远程目录
  f.cwd('remotepath')
 2> 删除远程文件
  f.delete('remotefile')
 3> 删除远程目录(空目录)
  f.rmd('remoteDIR')
 4> 建立目录
  f.mkd('remoteDIR')
 5> 移动和重命名文件
  f.rename('filename','newfilename')
 如果在同一目录内,文件被重命名,如果目标是另外一个目录下的名字,文件被移动。
 6> 返回远程目录列表
  f.nlst()
 7> tuple ftplib.all_errors 能捕捉所有可能发生的错误

你可能感兴趣的:(python)