Python自动化 - Windows开发环境下提取修改过的文件并压缩上传到指定的FTP

日常工作中,经常有项目修改后,要更新,全部打包war包更新的话很费事,写个脚本,主要实现:

提取指定日期后修改的文件

过滤某些目录和文件

将提取的文件打包

FTP到指定的服务器

 

之前用VBS和VB写了一个,效率不理想。用Java写了一个效率不错,可惜想修改的话,就要动用eclipse,最后用python+DOS命令解决了快速修改和效率的问题

 

Eclipse项目目录版本:

import os
import shutil
import tarfile
from ftplib import FTP

app_name     = "lfpt_hb"

project_home = "D:\java\project_hf"
update_home  = "E:\PythonUpdate"
time_modify  = "4-26-2013"  #format m-d-y

path_src_web = r"%s\%s\WebContent" %(project_home, app_name)
path_src_cls = r"%s\%s\build\classes" %(project_home, app_name)
path_src_lib = r"%s\%s\WebContent\WEB-INF\lib" %(project_home, app_name)

path_dst_web = r"%s\%s" %(update_home, app_name)
path_dst_cls = r"%s\%s\WEB-INF\classes" %(update_home, app_name)
path_dst_lib = r"%s\%s\WEB-INF\lib" %(update_home, app_name)

file_zip     = r"%s\%s_%s.tar.gz" %(update_home, app_name, time_modify)

#set exclude file for xcopy /exclude:file
exclude_all = "/EXCLUDE:update_client_exclude_all.txt"
exclude_lib = "/EXCLUDE:update_client_exclude_lib.txt"

# ftp settings
ftp_server   = "192.168.3.231"
ftp_port     = "21"
ftp_user     = "update"
ftp_password = "update"

def copy_web_files():
    cmd_xcopy = 'xcopy %s %s /I /Y /S /D:%s %s' %(path_src_web, path_dst_web, time_modify, exclude_all)
    print(cmd_xcopy)
    os.system(cmd_xcopy)
    print("copy_web_files end...")
def copy_jar_files():
    cmd_xcopy = "xcopy %s %s /I /Y /S %s" %(path_src_lib, path_dst_lib, exclude_lib)
    print(cmd_xcopy)
    os.system(cmd_xcopy)

def copy_class_files():
    if not os.path.exists(path_dst_cls):
        cmd_xcopy = "xcopy %s %s /I /Y /S /D:%s %s" %(path_src_cls, path_dst_cls, time_modify, exclude_all)
        print(cmd_xcopy)
        os.system(cmd_xcopy)
        print("copy_web_files end...")

def tar_files():
    print("taring files...")
    tar = tarfile.open(file_zip, "w:gz")
    tar.add(path_dst_web, "")
    tar.close()

def ftp_stor_files():
    cmd_stor = "STOR %s" %(os.path.split(file_zip)[1])
    print(cmd_stor)
    ftp = FTP(ftp_server, ftp_user, ftp_password)
    ftp.getwelcome()
    ftp.storbinary(cmd_stor, open(file_zip, "rb"), 1024)
    ftp.close()
    #ftp.quit()

def clear():
    cmd_rmdir = "rmdir /S /Q %s" %(path_dst_web)
    cmd_del = "del /S /Q %s" %(file_zip)
    print cmd_rmdir
    print cmd_del
    os.system(cmd_rmdir)
    os.system(cmd_del)
    
if __name__ == "__main__":
    copy_web_files()
    #copy_jar_files()
    copy_class_files()
    tar_files()
    ftp_stor_files()
    clear()
    print("done, python is great!")

 Maven目录结构的版本:

#! /usr/bin/env python     
# -*- coding: utf-8 -*-     
#@author jinqinghua@gmail.com    
#@version 2013-05-28

import os
import shutil
import tarfile
from ftplib import FTP

#以下部分可能要修改
app_name     = "eoa-web"

project_home = "D:\Java\workspace\project-svn\eoa-parent"
update_home  = "F:\PythonUpdate"
time_modify  = "5-27-2013"  #format m-d-y

path_src_web = r"%s\%s\src\main\webapp" %(project_home, app_name)
path_src_cls = r"%s\%s\target\classes" %(project_home, app_name)
path_src_lib = r"%s\%s\target\eoa-web\WEB-INF\lib\WEB-INF\lib" %(project_home, app_name)

path_dst_web = r"%s\%s" %(update_home, app_name)
path_dst_cls = r"%s\%s\WEB-INF\classes" %(update_home, app_name)
path_dst_lib = r"%s\%s\WEB-INF\lib" %(update_home, app_name)

file_zip     = r"%s\%s_%s.tar.gz" %(update_home, app_name, time_modify)

#set exclude file for xcopy /exclude:file
exclude_all = "/EXCLUDE:update_client_exclude_all.txt"
exclude_lib = "/EXCLUDE:update_client_exclude_lib.txt"

# ftp settings
ftp_server   = "192.168.0.220"
ftp_port     = "21"
ftp_user     = "admin"
ftp_password = "admin"

def copy_web_files():
    cmd_xcopy = 'xcopy %s %s /I /Y /S /D:%s %s' %(path_src_web, path_dst_web, time_modify, exclude_all)
    print(cmd_xcopy)
    os.system(cmd_xcopy)
    print("copy_web_files end...")
    
def copy_jar_files():
    cmd_xcopy = "xcopy %s %s /I /Y /S %s" %(path_src_lib, path_dst_lib, exclude_lib)
    print(cmd_xcopy)
    os.system(cmd_xcopy)

def copy_class_files():
    if not os.path.exists(path_dst_cls):
        cmd_xcopy = "xcopy %s %s /I /Y /S /D:%s %s" %(path_src_cls, path_dst_cls, time_modify, exclude_all)
        print(cmd_xcopy)
        os.system(cmd_xcopy)
        print("copy_web_files end...")

def tar_files():
    print("taring files...")
    tar = tarfile.open(file_zip, "w:gz")
    tar.add(path_dst_web, "")
    tar.close()

def ftp_stor_files():
    cmd_stor = "STOR %s" %(os.path.split(file_zip)[1])
    print(cmd_stor)
    ftp = FTP(ftp_server, ftp_user, ftp_password)
    ftp.getwelcome()
    ftp.storbinary(cmd_stor, open(file_zip, "rb"), 1024)
    ftp.close()
    #ftp.quit()

def clear():
    cmd_rmdir = "rmdir /S /Q %s" %(path_dst_web)
    cmd_del = "del /S /Q %s" %(file_zip)
    print cmd_rmdir
    print cmd_del
    os.system(cmd_rmdir)
    os.system(cmd_del)

#主运行程序,可能要修改
if __name__ == "__main__":
    copy_web_files()
    #copy_jar_files()
    copy_class_files()
    tar_files()
    ftp_stor_files()
    #clear()
    print("done, python is great!")

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值