python从网上下载文件,python登录网站自动下载文件

  python从网上下载文件,python登录网站自动下载文件

  大蟒如何从文件传输协议(文件传输协议的缩写)下载hxsddy:

  首先引入文件传输协议(文件传输协议的缩写)模块;

  然后使用【chdir】命令切换工作路径;

  使用" self.ftp.nlst()"命令获取目录中的hxsddy

  最后使用" self.ftp.retrbinary()"命令下载ftphxsddy即可。

  #!/usr/bin/python

  #编码=utf-8

  导入操作系统

  引入fromftplibimportFTP # FTP模式的老实老鼠/p class MyFtp:

  ftp=FTP()

  def __init__(self,host,port=21):

  自我FTP.connect(主机,端口) )。

  定义登录(自、用户名称、pwd):

  打开自我FTP.set_debuglevel(#调试级别2,查看详细信息

  自我FTP.login(用户名,密码)))).

  p

  rint(self .欢迎使用).

  定义下载文件(自、本地路径、远程路径、文件名) :

  将工作路径切换到操作系统chdir(本地路径) (目标幽默绿茶/Pself.ftp.CWD)远程路径)。要注册的文件传送协议目的幽默绿茶/p self.ftp.nlst)),在目录下获取冷傲云/pfft WB ().写#),在写入模式下本地文冷傲云

  自我FTP.set_debuglevel(#关闭调试

  自我. FTP.quit (if _ _ name _== _ main _ :

  FTP=myftp(主机) ) )。

  FTP.login(用户名,密码).

  FTP。下载文件(e:\ red \ \ workspace \ app auto \ apk \ \ Android 10(,/mobile/Android/reloid

  ftp.close(

  #编码=utf-8

  可以进行文件传输协议(文件传输协议的缩写)自动下载、自动上传脚本和递归目录操作

  来自前端导入奋斗的蜗牛/p导入操作系统,系统,字符串,日期时间,时间

  导入套接字

  户名类:

  def __init__(self,hostaddr,用户名,密码,remotedir,port=21):

  self.hostaddr=hostaddr

  self.username=用户名

  自我密码=密码

  self.remotedir=remotedir

  self.port=port

  self.ftp=FTP(

  self.file_list=[]

  #自我FTP.set_debuglevel(2))。

  def __del__(self):

  self.ftp.close(

  #自我FTP.set_debuglevel(0))。

  德夫登录(自己) :

  ftp=self.ftp

  尝试:

  时间out=300

  套接字。设置默认时间输出(时间输出)。

  ftp.set_pasv(True)

  打印你好开始连接到%s%(self.hostaddr)

  FTP.connect(自我.Hostaddr,self.port)。

  打印你好已成功连接到%s %(self.hostaddr)

  打印你好开始登录到% s"%(自身Hostaddr)

  FTP.login(self.username,self.password)。

  打印你好已成功登录到%s %(self.hostaddr)

  调试_打印(FTP。getwelcome())

  例外情况除外:

  打印你好连接或登录失败

  尝试:

  ftp.cwd(self.remotedir)

  除外(例外):

  打印你好切换目录失败

  def is_same_size(self,localfile,remotefile):

  尝试:

  远程file _ size=self。FTP。大小(远程文件)

  除了:

  remotefile_size=-1

  尝试:

  本地文件大小=操作系统。路径。getsize(本地文件)

  除了:

  localfile_size=-1

  debug_print(本地文件大小:%d远程文件大小:% d“%(本地文件大小,远程文件大小),)

  如果远程文件大小==本地文件大小:

  返回一

  否则:

  返回0

  def download_file(self,localfile,remotefile):

  if self.is_same_size(localfile,remotefile):

  debug_print(u%s hxsddy大小相同,无需下载%localfile)

  返回

  否则:

  调试_打印(u 下载hxsddy %s . %localfile)

  #返回

  file_handler=open(本地文件, wb )

  自我。FTP。retr binary(u retr % s %(远程文件),file_handler.write)

  file_handler.close()

  def download_files(self,localdir= ./,remotedir= ./):

  尝试:

  self.ftp.cwd(远程目录)

  除了:

  调试_打印(u 目录%s不存在,继续.%remotedir)

  返回

  如果不是os.path.isdir(localdir):

  os.makedirs(本地目录)

  调试_打印(u 切换至目录%s %self.ftp.pwd())

  self.file_list=[]

  自我。FTP。dir(self。获取文件列表)

  remotenames=self.file_list

  #打印(远程名称)

  #返回

  对于远程名称中的项目:

  文件类型=项目[0]

  filename=item[1]

  local=os.path.join(本地目录,文件名)

  如果文件类型==d :

  self .下载_文件(本地,文件名)

   否则如果文件类型==-:

  self.download_file(本地,文件名)

  self.ftp.cwd( . )

  调试_打印(u 返回上层目录%s %self.ftp.pwd())

  def upload_file(self,localfile,remotefile):

  如果不是os.path.isfile(本地文件):

  返回

  if self.is_same_size(localfile,remotefile):

  调试_打印(u 跳过要减肥的砖头等]: %s %localfile)

  返回

  file _ handler % 20% 3D % 20打开% 28本地文件% 2C % 20% 27rb % 27% 29% 0A % 20自身。FTP。stor binary % 28% 27 stor % 20% 25s % 27% 20% 25远程文件% 2C % 20文件处理程序% 29% 0A % 20文件处理程序。关闭% 28% 29% 0A % 20调试打印% 28u % 27% E5 % B7 % B2 % E4 % BC % A0 % E9 % 2F % 27% 2C % 20远程目录%20%3D%20%27 .% 2F % 27% 29% 3A % 0A % 20if % 20 not % 20os。路径。是本地目录% 29 % 3A % 0A % 20本地名称% 20% 3D % 20os。列表目录% 28本地目录% 29% 0A % 20自身。FTP。CWD % 28远程目录% 29% 0A % 20用于% 20项目% 20在% 20本地名称% 3A % 0A % 20 src % 20%.% 27% 29% 0A % 20 def % 20 get _ file _ list % 28 self % 2C % 20 line % 29% 3A % 0A % 20 ret _ arr % 20% 3D % 20% 5B % 5D % 0A % 20 file _ arr % 20% 3D % 20 self。get _ filename % 28 line % 29% 0A % 20 if % 20 file _ arr % 5B 1% 5D % 20 not % 20 in % 20% 5B % 27 .%27%2C%20%27.% 27% 5D % 3A % 0A % 20自己。file _ list。追加% 28 file _ arr % 29% 0A % 20 def % 20 get _ filename % 28 self % 2C % 20 line % 29% 3A % 0A % 20 pos % 20% 3D % 20 line。rfind % 28% 27% 3A % 27% 29% 0A % 20 while % 28 line % 5b pos % 5D % 20% 21% 3D % 20% 27% 27% 29%

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: