广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 更新svn 并 ftp更新
  • 159
分享到

python 更新svn 并 ftp更新

pythonsvnftp 2023-01-31 02:01:49 159人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

#!/usr/bin/env python # -*- coding:utf-8 -*- import pysvn import locale import datetime import sys import os import JS

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pysvn
import locale
import datetime
import sys 
import os 
import JSON 
from ftplib import FTP 
def setlocale():
    language_code, encoding = locale.getdefaultlocale()
    if language_code is None:
        language_code = 'en_GB'
    if encoding is None:
        encoding = 'UTF-8'
    if encoding.lower == 'utf':
        encoding = 'UTF-8'
    locale.setlocale( locale.LC_ALL, '%s.%s' % (language_code, encoding))
def get_login( realm, username, may_save ):
    return True, 'test', 'test', True
def svncheckout():
    client = pysvn.Client()
    client.callback_get_login = get_login
    ret = client.checkout(url,path)
def svnupdate(path):
    client = pysvn.Client()
    ret = client.update(path)
    #print ret
    return ret
def svninfo(path):
    client = pysvn.Client()
    entry = client.info(path)
    Version = "Version: %s" % entry.commit_revision.number
    Author = "Author: %s" % entry.commit_author
    Update = "Update Date: %s" % str(datetime.datetime.fromtimestamp(entry.commit_time))[:-7]
    f = file('log.txt','a')
    f.write(Version+'\n'+Author+'\n'+Update+'\n'+'-'*32+'\n')
    f.close()
if __name__ == "__main__":
#path = "/home/yhq/Python/svntest"
path = r"D:\virualsvn"
url = "Http://192.168.5.110:808/svn/test/"
    #setlocale()
#svncheckout()
svnupdate(path)
svninfo(path)
############
_XFER_FILE = 'FILE' 
_XFER_DIR = 'DIR' 
class Xfer(object): 
    ''''
    @note: upload local file or dirs recursively to ftp server
    ''' 
    def __init__(self): 
        self.ftp = None 
    def __del__(self): 
        pass 
    def setFtpParams(self, ip, uname, pwd, port = 21, timeout = 60):         
        self.ip = ip 
        self.uname = uname 
        self.pwd = pwd 
        self.port = port 
        self.timeout = timeout 
    def initEnv(self): 
        if self.ftp is None: 
            self.ftp = FTP() 
            print '### connect ftp server: %s ...'%self.ip 
            self.ftp.connect(self.ip, self.port, self.timeout) 
            self.ftp.login(self.uname, self.pwd)  
            print self.ftp.getwelcome() 
    def clearEnv(self): 
        if self.ftp: 
            self.ftp.close() 
            print '### disconnect ftp server: %s!'%self.ip  
            self.ftp = None 
    def uploadDir(self, localdir='./', remotedir='./'): 
        if not os.path.isdir(localdir):   
            return 
        self.ftp.cwd(remotedir)  
        for file in os.listdir(localdir): 
            src = os.path.join(localdir, file) 
            if os.path.isfile(src): 
                self.uploadFile(src, file) 
            elif os.path.isdir(src): 
                try:   
                    self.ftp.mkd(file)   
                except:   
                    sys.stderr.write('the dir is exists %s'%file) 
                self.uploadDir(src, file) 
        self.ftp.cwd('..') 
    def uploadFile(self, localpath, remotepath='./'): 
        if not os.path.isfile(localpath):   
            return 
        print '+++ upload %s to %s:%s'%(localpath, self.ip, remotepath) 
        self.ftp.storbinary('STOR ' + remotepath, open(localpath, 'rb')) 
    def __filetype(self, src): 
        if os.path.isfile(src): 
            index = src.rfind('\\') 
            if index == -1: 
                index = src.rfind('/')                 
            return _XFER_FILE, src[index+1:] 
        elif os.path.isdir(src): 
            return _XFER_DIR, ''         
    def upload(self, src): 
        filetype, filename = self.__filetype(src) 
        self.initEnv() 
        if filetype == _XFER_DIR: 
            self.srcDir = src             
            self.uploadDir(self.srcDir) 
        elif filetype == _XFER_FILE: 
            self.uploadFile(src, filename) 
        self.clearEnv()  
if __name__ == '__main__': 
    #srcDir = r"C:\sytst" 
    srcDir = r"D:\xshell"
    #srcFile = r'C:\sytst\sar.c' 
    xfer = Xfer() 
    xfer.setFtpParams('192.168.5.110', '', '') 
    xfer.upload(srcDir)     
    xfer.upload(srcFile)


--结束END--

本文标题: python 更新svn 并 ftp更新

本文链接: https://www.lsjlt.com/news/186423.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 更新svn 并 ftp更新
    #!/usr/bin/env python # -*- coding:utf-8 -*- import pysvn import locale import datetime import sys import os import js...
    99+
    2023-01-31
    python svn ftp
  • python 更新svn 并复制到其他目
    #!/usr/bin/env python # -*- coding:utf-8 -*- import pysvn import locale import datetime import os def setlocale(): l...
    99+
    2023-01-31
    python svn
  • Python定期从SVN更新文件
    如果一个测试站点要及时的从svn获取最新的文件,那么写一个定期更新程序是非常必要的,下面的代码Python的简单实现svnupdate.py impo...
    99+
    2023-01-31
    文件 Python SVN
  • Python写自动化之SVN更新
    在远程机器上执行脚本时,为了能够保证脚本的实时性,我们一般会将脚本存放到SVN上,远程机器通过SVN的操作去更新脚本; SVN更新脚本只需要2步就可以实现了,这个地方使用到pysvn库,看下实现 # 初始化client self.clie...
    99+
    2023-01-31
    Python SVN
  • Winform使用FTP实现自动更新
    本文实例为大家分享了Winform使用FTP实现自动更新的具体代码,供大家参考,具体内容如下 实现思路:在主程序打开前实现判断是否需要更新(可以通过数据库表记录一下版本号或者别的方式...
    99+
    2022-11-13
  • 怎么用SVN钩子自动更新项目
    这篇文章主要讲解了“怎么用SVN钩子自动更新项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用SVN钩子自动更新项目”吧!使用post-commit更新SVN 服务器地址:192.16...
    99+
    2023-06-04
  • Unity3d热更新(一):更新思路
    目前Unity手游的热更新基本采用如下思路:首先将资源打包成AssetBundle。如果有两个对象共同依赖于同一个对象,需要采用依赖关系打包。AssetBundle需要根据不同的平台打包,各平台之间不能混用,如IOS和Android。为打包...
    99+
    2023-01-31
    思路 Unity3d
  • Android中的全量更新、增量更新以及热更新
    在客户端开发过程中,我们可能会遇到这样一种需求:点击某个按钮弹出一个弹窗,提示我们可以更新到apk的某个版本,或者我们可以通过服务端接口进行强制更新。在这种需求中,我们是不需要通过应用商店来更新我们的...
    99+
    2023-09-14
    android java android studio
  • linux python 更新版本
    安装完CentOS6.5(Final)后,执行#Python与#python -V,看到版本号是2.6,而且之前写的都是跑在python3.X上面的,3.X和2.X有很多不同,有兴趣的朋友可以参考下这篇文章:  更新python千万不要...
    99+
    2023-01-31
    版本 linux python
  • Python 软件热更新
    本篇文章涉及技术知识如下: Redis threading 多线程 PyQt5 importlib 热更新 场景 咱们在平时运行一些长时间都会一直运行的软件(如:某些云同步软件)的时候,某些功能因为考虑的情况可能不充分,导致体验不...
    99+
    2023-01-31
    软件 Python
  • Python--matplotlib(持续更新)
    目录 前言准备格式调整 & 自定义设置 一.pyplot基础函数(一)后端资源管理1.内存或显示处理1.1 matplotlib.pyplot.show()1.2 matplotlib.p...
    99+
    2023-08-31
    python matplotlib 开发语言
  • python怎么更新pip
    更新Python中的pip的方法有“使用命令行工具更新”和“使用Python脚本更新”两种:1、在终端或命令行中输入“pip install --upgrade pip”命令使用最新版本的pip;2、创建一个新的Python脚本文件,添加更...
    99+
    2023-12-19
    更新pip pip
  • 亚马逊更新和部分更新
    一些最常见的亚马逊更新是关于产品价格、产品描述、库存数量、新的SKU(库存单位)、新的支付选项、退货政策和交货方式等。此外,亚马逊还可能在每次更新时发布一些新的产品、更新的市场趋势和其他信息。 需要注意的是,亚马逊的更新和改进通常是为了改...
    99+
    2023-10-27
    新和 亚马逊
  • win10更新好还是不更新好
    是否更新Windows 10取决于您个人的需求和偏好。以下是一些考虑因素:1. 安全性:更新Windows 10可以提供最新的安全补...
    99+
    2023-08-26
    win10
  • opatch更新
    通常我们利用opatch 工具来升级数据库,那么一般要求opatch的版本要高于你要升级后的数据库的版本。例如:升级数据库到11.1.0.2,那么opatch要高于11.1.0.2。 select...
    99+
    2022-10-18
  • win10更新失败如何取消更新
    这篇文章主要讲解了“win10更新失败如何取消更新”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win10更新失败如何取消更新”吧!解决方法:点击开始选择“设置”。 点击“更新和安全”。 点...
    99+
    2023-07-01
  • ADO.NET如何处理并发更新
    这篇文章主要介绍了ADO.NET如何处理并发更新,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。设置并发模式Entity Framework 实现了乐观的并发模式(Optimi...
    99+
    2023-06-17
  • python 学习(持续更新......
    1、Python没有数组,但是列表 (list) 跟数组很像;Python的元组 (tuple) 与列表相似,但是元组的元素不能 修改;      列表使用方括号,元组使用小括号,其实可以把元组看成是只读的列表;      在Python中...
    99+
    2023-01-31
    python
  • python中如何更新pip
    python中更新pip的方法:1、打开运行窗口输入“cmd”进入命令行窗口;2、输入“python -m pip install --upgrade pip”命令来更新pip即可。具体操作步骤:在windows系统中通过快捷键【win+R...
    99+
    2022-10-24
  • Python-使用watchdog热更新
    直接上代码: import importlib from watchdog.observers import Observer from watchdog.events import * class ScriptEventHa...
    99+
    2023-01-31
    Python watchdog
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作