`

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!")

 

 

分享到:
评论

相关推荐

    Python实战自动办公-Pandas提取指定数据并保存在原Excel工作簿中.zip

    Python实战自动办公-25 Pandas提取指定数据并保存在原Excel工作簿中Python实战自动办公-25 Pandas提取指定数据并保存在原Excel工作簿中Python实战自动办公-25 Pandas提取指定数据并保存在原Excel工作簿中Python实战...

    Python实战自动办公- 一键将word中的表格提取到excel文件中.zip

    Python实战自动办公- 一键将word中的表格提取到excel文件中Python实战自动办公- 一键将word中的表格提取到excel文件中Python实战自动办公- 一键将word中的表格提取到excel文件中Python实战自动办公- 一键将word中的...

    python-3.10.8-amd64 python3.10 64位windows安装包

    无论是初学者还是经验丰富的程序员,都可以利用这个强大的工具来实现各种计算任务,从数据科学到web开发,再到自动化脚本,Python都能胜任。通过持续学习和实践,你可以深入掌握Python的精髓,并利用其丰富的生态...

    python一键安装包-windows版.zip

    通过"Python一键安装包-windows版.zip",用户可以快速便捷地在Windows系统上搭建Python开发环境,从而更好地投入到Python的学习和项目开发中。只需解压并运行脚本,就可以省去手动设置的麻烦,更加专注于编写代码和...

    python-3.7.9-amd64.exe

    这个`.exe`文件是一个可执行程序,适用于Windows 7和10操作系统,方便用户直接安装Python环境。在深入探讨这个安装文件之前,我们先来了解一下Python和它的主要特性。 Python是一种高级编程语言,以其易读性强、...

    Python一键安装包-Windows版

    7. **环境变量**:安装Python时,一般会自动将Python和pip的路径添加到系统环境变量,使得在任何目录下都可以运行Python和pip命令。 8. **后续步骤**:安装完成后,用户可以开始学习Python编程,通过IDLE(集成开发...

    python-3.12.1-amd64安装包

    安装Python后,用户可以利用它进行各种开发任务,如Web开发(使用Django或Flask框架)、数据分析(Pandas、NumPy、SciPy等库)、机器学习(TensorFlow、PyTorch)、自动化脚本等。此外,Python的pip工具允许用户方便...

    Python 自动办公- 一键将word中的表格提取到excel文件中 Python源码

    Python 自动办公- 一键将word中的表格提取到excel文件中 Python源码Python 自动办公- 一键将word中的表格提取到excel文件中 Python源码Python 自动办公- 一键将word中的表格提取到excel文件中 Python源码Python 自动...

    python-3.10.4-amd64.exe适用于Windows x86_64系统

    在Windows环境下,Python的安装过程通常通过执行可执行文件(如本例中的`python-3.10.4-amd64.exe`)来完成。 1. **Python 3.10.4 版本特性** - 优化性能:每个新版本都会带来性能的提升,Python 3.10.4也不例外,...

    Python实战自动办公-批量修改word文件中的段落格式.zip

    Python实战自动办公- 批量修改word文件中的段落格式Python实战自动办公- 批量修改word文件中的段落格式Python实战自动办公- 批量修改word文件中的段落格式Python实战自动办公- 批量修改word文件中的段落格式Python...

    Python实战自动办公 Python一键提取PDF中的表格到Excel.zip

    Python实战自动办公- Python一键提取PDF中的表格到Excel;Python实战自动办公- Python一键提取PDF中的表格到Excel;Python实战自动办公- Python一键提取PDF中的表格到Excel;Python实战自动办公- Python一键提取PDF...

    python-3.8.10-amd64.rar

    - "python-3.8.10-amd64.exe"是Python的安装程序,双击运行后,用户可以选择自定义安装路径、是否添加Python到系统环境变量,以及选择安装额外的组件,如IDLE(集成开发环境)和pip(包管理器)。 - 安装过程中,...

    python-3.11.2-arm64.exe的zip压缩包

    Python的强大在于其丰富的生态系统,这使得它成为Web开发、数据分析、机器学习、自动化等领域的首选语言之一。 总之,"python-3.11.2-arm64.exe"的zip压缩包为Windows x64(尤其是ARM64设备)提供了Python 3.11.2的...

    python官方3.7.2-amd64版本exe安装包

    4. 配置环境变量:当选择添加Python到PATH时,系统环境变量将被自动更新,使得Python解释器和pip(Python的包管理器)能在任何目录下被调用。 5. 同步版本:如果你已经安装了其他Python版本,确保新安装的3.7.2版本...

    python-3.8.10-amd64.7z

    Python是一种高级编程语言,以其简洁明了的语法和强大的功能而受到全球...同时,Python在Web开发(如Django、Flask框架)、数据分析、机器学习、自动化运维等领域都有广泛的应用,是现代软件开发中不可或缺的工具之一。

    python-3.11.5-embed-amd64.zip

    这允许你在不改变全局Python环境的情况下,指定特定的库路径。 2. **python.cat**:这是一个微软Windows上的安全描述符定义语言(SDDL)文件,用于验证软件的完整性。它通常与数字签名相关,确保你下载的Python版本...

    Python-python上传excel表格数据到ftp服务器

    在Python编程中,将Excel表格数据上传到FTP服务器是一项常见的任务,特别是在数据处理和文件共享的场景下。这里,我们主要关注如何使用Python的库来实现这个功能,以及FTP网络编程的基本概念。 首先,我们需要了解...

    pythonamd64python-3.7.3-amd64安装包

    2. **备份原有环境**:如果之前已经安装过其他版本的Python,建议先备份原有的开发环境配置文件,避免后续出现冲突。 #### 具体步骤 1. **双击运行安装程序**:找到已下载的“python-3.7.3-amd64.exe”文件并双击...

Global site tag (gtag.js) - Google Analytics