前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python ftp下载文件 脚本

python ftp下载文件 脚本

作者头像
用户5760343
发布于 2022-05-13 01:49:36
发布于 2022-05-13 01:49:36
1.1K00
代码可运行
举报
文章被收录于专栏:sktjsktj
运行总次数:0
代码可运行

------------------------------------------getfile.py

!/usr/local/bin/python

from ftplib import FTP # socket-based FTP tools from os.path import exists # file existence test

def getfile(file, site, dir, user=(), , verbose=True, refetch=False): """ fetch a file by ftp from a site/directory anonymous or real login, binary transfer """ if exists(file) and not refetch: if verbose: print(file, 'already fetched') else: if verbose: print('Downloading', file) local = open(file, 'wb') # local file of same name try: remote = FTP(site) # connect to FTP site remote.login(user) # anonymous=() or (name, pswd) remote.cwd(dir) remote.retrbinary('RETR ' + file, local.write, 1024) remote.quit() finally: local.close() # close file no matter what if verbose: print('Download done.') # caller handles exceptions

if name == 'main': from getpass import getpass file = 'monkeys.jpg' dir = '.' site = 'ftp.rmi.net' user = ('lutz', getpass('Pswd?')) getfile(file, site, dir, user)

---------------------------------getfilegui.py

from tkinter import Tk, mainloop from tkinter.messagebox import showinfo import getfile, os, sys, _thread # FTP getfile here, not socket from PP4E.Internet.Sockets.form import Form # reuse form tool in socket dir

class FtpForm(Form): def init(self): root = Tk() root.title(self.title) labels = ['Server Name', 'Remote Dir', 'File Name', 'Local Dir', 'User Name?', 'Password?'] Form.init(self, labels, root) self.mutex = _thread.allocate_lock() self.threads = 0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def transfer(self, filename, servername, remotedir, userinfo):
    try:
        self.do_transfer(filename, servername, remotedir, userinfo)
        print('%s of "%s" successful'  % (self.mode, filename))
    except:
        print('%s of "%s" has failed:' % (self.mode, filename), end=' ')
        print(sys.exc_info()[0], sys.exc_info()[1])
    self.mutex.acquire()
    self.threads -= 1
    self.mutex.release()

def onSubmit(self):
    Form.onSubmit(self)
    localdir   = self.content['Local Dir'].get()
    remotedir  = self.content['Remote Dir'].get()
    servername = self.content['Server Name'].get()
    filename   = self.content['File Name'].get()
    username   = self.content['User Name?'].get()
    password   = self.content['Password?'].get()
    userinfo   = ()
    if username and password:
        userinfo = (username, password)
    if localdir:
        os.chdir(localdir)
    self.mutex.acquire()
    self.threads += 1
    self.mutex.release()
    ftpargs = (filename, servername, remotedir, userinfo)
    _thread.start_new_thread(self.transfer, ftpargs)
    showinfo(self.title, '%s of "%s" started' % (self.mode, filename))

def onCancel(self):
    if self.threads == 0:
        Tk().quit()
    else:
        showinfo(self.title,
                 'Cannot exit: %d threads running' % self.threads)

class FtpGetfileForm(FtpForm): title = 'FtpGetfileGui' mode = 'Download' def do_transfer(self, filename, servername, remotedir, userinfo): getfile.getfile( filename, servername, remotedir, userinfo, verbose=False, refetch=True)

if name == 'main': FtpGetfileForm() mainloop()

-----------------------------------------------------Form.py from tkinter import * entrysize = 40

class Form: # add non-modal form box def init(self, labels, parent=None): # pass field labels list labelsize = max(len(x) for x in labels) + 2 box = Frame(parent) # box has rows, buttons box.pack(expand=YES, fill=X) # rows has row frames rows = Frame(box, bd=2, relief=GROOVE) # go=button or return key rows.pack(side=TOP, expand=YES, fill=X) # runs onSubmit method self.content = {} for label in labels: row = Frame(rows) row.pack(fill=X) Label(row, text=label, width=labelsize).pack(side=LEFT) entry = Entry(row, width=entrysize) entry.pack(side=RIGHT, expand=YES, fill=X) self.content[label] = entry Button(box, text='Cancel', command=self.onCancel).pack(side=RIGHT) Button(box, text='Submit', command=self.onSubmit).pack(side=RIGHT) box.master.bind('<Return>', (lambda event: self.onSubmit()))

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def onSubmit(self):                                      # override this
    for key in self.content:                             # user inputs in
        print(key, '\t=>\t', self.content[key].get())    # self.content[k]

def onCancel(self):                                      # override if need
    Tk().quit()                                          # default is exit

class DynamicForm(Form): def init(self, labels=None): labels = input('Enter field names: ').split() Form.init(self, labels) def onSubmit(self): print('Field values...') Form.onSubmit(self) self.onCancel()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
详解JavaScript跨域问题
什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js htt
前朝楚水
2018/04/03
1.1K0
跨域详解 【原创】
跨域详解 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng@csxiaoyao.com QQ: 1724338257 目录导航 跨域详解 1. 概念 2. 跨域资源共享(CORS) 3. jsonp跨域 3.1 概念 3.2 实现 3.3 jQuery封装操作 3.4 JSONP优缺点 CORS 与 J
CS逍遥剑仙
2018/04/28
1.4K0
Web前端学习笔记之前端跨域知识总结
相信每一个前端er对于跨域这两个字都不会陌生,在实际项目中应用也是比较多的。但跨域方法的多种多样实在让人目不暇接。老规矩,碰到这种情况,就只能自己总结一篇博客,作为记录。
Jetpropelledsnake21
2018/08/10
1.1K0
web跨域解决方案
阅读目录 什么是跨域 常用的几种跨域处理方法: 跨域的原理解析及实现方法 总结 摘要:跨域问题,无论是面试还是平时的工作中,都会遇到,本文总结处理跨域问题的几种方法以及其原理,也让自己搞懂这方面的知识,走起。 什么是跨域     在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。   JavaScript这个安全策
hbbliyong
2018/03/06
2.8K0
web跨域解决方案
ajax实现跨域_js跨域请求的三种方法
跨域大家都知道,不同地址,不同端口,不同级别,不同协议都会构成跨域。例如:about.haorooms.com和www.haorooms.com都会构成跨域。总结起来只要协议、域名、端口有任何一个不同,都被当作是不同的域。下面举例,每两个一组。
全栈程序员站长
2022/09/23
2.9K0
js跨域解决方案
在页面渲染时需要动态获取iframe子页面的高度,然后重新设置iframe高度,达到自适应的目的,但是由于iframe子页面中也涉及到访问其他系统的页面,这就使得页面渲染时无法获取子页面高度,这里涉及到跨域访问子页面问题。
一笠风雨任生平
2019/08/02
4.1K0
什么是跨域?如何解决跨域问题?
什么是跨域? 浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 域名:  主域名不同 http://www.baidu.com/index.html –>http://www.sina.com/test.js  子域名不同 http://www.666.baidu.com/index.html –>http://www.555.baidu.com/test.js  域名和域名ip http://www.baidu.com/index.html –>http://180.149.132.47/test.js 端口:  http://www.baidu.com:8080/index.html–> http://www.baidu.com:8081/test.js 协议:  http://www.baidu.com:8080/index.html–> https://www.baidu.com:8080/test.js 备注:  1、端口和协议的不同,只能通过后台来解决  2、localhost和127.0.0.1虽然都指向本机,但也属于跨域
全栈程序员站长
2022/07/01
7390
什么是跨域?如何解决跨域问题?
js中几种实用的跨域方法原理详解
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被
似水的流年
2018/01/18
2.2K0
js中几种实用的跨域方法原理详解
浏览器同源策略及跨域的解决方法
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说 Web 是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
laixiangran
2018/07/25
1.6K0
浏览器同源策略及跨域的解决方法
跨域请求方案 终极版
现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。
互扯程序
2018/07/30
3.8K0
优秀博客文章 | javascript跨域方法总结
最近面试问的挺多的一个问题,就是JavaScript的跨域问题。在这里,对跨域的一些方法做个总结。由于浏览器的同源策略,不同域名、不同端口、不同协议都会构成跨域;但在实际的业务中,很多场景需要进行跨域传递信息,这样就催生出多种跨域方法。
用户1467662
2019/04/19
5550
优秀博客文章 | javascript跨域方法总结
JS跨域请求解决方案
同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CSFR等攻击。所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
码客说
2019/10/22
5.2K0
AJAX 与跨域通信(二):跨域解决方案
本篇讲解常见的几种跨域方案:JSONP、CORS、图像Ping、document.domain、window.name。
Chor
2019/11/11
1.3K0
AJAX 与跨域通信(二):跨域解决方案
什么是跨域以及几种简单解决方案
同源策略就是用来限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。那怎样判断是否是同源呢?
lyb-geek
2022/03/10
5430
你真的了解跨域吗
相信每个前端对于跨域这两个字都不会陌生,在实际项目中应用也很多,但跨域方法的多种多样让人目不暇接,前段时间公司同事出现了跨域问题,又一时找不到问题所在,所以在此总结下跨域知识,一篇由浅入深的万字Web基操文
isboyjc
2022/03/28
2.4K0
你真的了解跨域吗
什么是跨域及怎么解决跨域问题?[通俗易懂]
这篇博文解释的挺清楚,我直接引用 什么是跨域?怎么解决跨域问题?_L瑜-CSDN博客_跨域是什么意思
全栈程序员站长
2022/08/11
12.9K0
什么是跨域及怎么解决跨域问题?[通俗易懂]
跨域资源共享的各种方式(持续更新)
在客户端编程语言中,如JavaScript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.example.org),那么我们就可以认为它们是相同的域。比如http://www.example.org/index.html和http://www.example.org/sub/index.html是同域,而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何两个都将构成跨域。同源策略还应该对一些特殊情况做处理,比如限制file协议下脚本的访问权限。本地的HTML文件在浏览器中是通过file协议打开的,如果脚本能通过file协议访问到硬盘上其它任意文件,就会出现安全隐患,目前IE8还有这样的隐患。
sunsky
2020/08/20
5630
前端 | 解决跨域问题方案
场景1:你的项目myweb,myweb的前端有一个接口是去访问一个非myweb的服务器。非myweb服务器是第三方服务器,你不能去对第三方服务器做改动。
Java小技巧
2022/10/27
7760
这次全了,8种超详细Web跨域解决方案!
导语 | 在日常开发过程中,我们通常都会遇到ajax跨域请求或者前端跨域通信的开发场景。无论是前端同学还是后端同学都需要具备解决跨域问题的能力。本文总结梳理了常见的跨域场景、跨域解决方案及其优缺点,希望可以作为大家解决跨域问题的参考。 一、什么是跨域 当a.qq.com域名下的页面或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为。跨域的定义从受限范围可以分为两种,广义跨域和狭义跨域。 (一)广义跨域 广义跨域通常包含以下三种行为: 资源跳转:a链接、重定向。 资源嵌入:<li
腾讯云开发者
2021/10/11
5K0
【前端】【转】JS跨域问题总结
CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。
zhaokang555
2023/10/17
2570
推荐阅读
相关推荐
详解JavaScript跨域问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验