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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。