python 更新svn 并 ftp更新
#!/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)
相关文章