最近工作有点忙,学习的时间也少了,为了提高工作效率,有时候我们需要自己写一些提高办公处理效率给的工具或者脚本或者程序。

比如,我目前遇到的一个事项,需要更新很多个tar包文件,把tar包内的某个文件替换为新文件,如果只是几个这样的tar包文件,一个个手工替换下也就行了。

但是如果数量太多了,手工替换就很繁琐,也耗时间,所以为了提高办公效率,写了一个程序脚本,批量自动化处理这批tar包文件。

第一步:列出完成更新操作的所有命令

自己根据实际情况参考修改。

第1步,根据tar包文件名,创建新文件夹
mkdir test 然后,查看当前操作目录文件列表,检查目录是否创建好
ls -lrt
-rw-r--r-- 1 root root 54 12月 10 17:14 os_file.txt
-rw-r--r-- 1 root root 659 12月 10 17:14 test.tar.gz
-rw-r--r-- 1 root root 3088 12月 10 17:17 os_shell.py
drwxr-xr-x 2 root root 4096 12月 10 17:18 test 第2步,解压缩tar文件到新文件夹里
解压缩到指定目录 tar -xzvf test.tar.gz -C /root/test_tar_new/test/ 然后,查看新文件夹文件列表,检查目录是否tar文件解压缩好
ls -lrt /root/test_tar_new/test
总用量 12
-rw-r--r-- 1 root root 365 12月 9 11:42 my_linux_kuaijiejian.txt
-rw-r--r-- 1 root root 384 12月 9 16:15 version.txt
-rw-r--r-- 1 root root 38 12月 10 17:13 os_file.txt 第3步,拷贝更新的文件到到新文件夹里
cp /root/test_tar_new/os_file.txt /root/test_tar_new/test 然后,查看新文件夹文件列表,检查更新的文件是否替换好
ls -lrt /root/test_tar_new/test
总用量 12
-rw-r--r-- 1 root root 365 12月 9 11:42 my_linux_kuaijiejian.txt
-rw-r--r-- 1 root root 384 12月 9 16:15 version.txt
-rw-r--r-- 1 root root 54 12月 10 17:18 os_file.txt 第4步,打包并压缩新文件夹里的文件
cd /root/test_tar_new/test && tar -czvf test_new.tar.gz ./*
./my_linux_kuaijiejian.txt
./os_file.txt
./version.txt 然后,查看新文件夹文件列表,检查新的压缩tar包是否生成
ls -lrt /root/test_tar_new/test
总用量 16
-rw-r--r-- 1 root root 365 12月 9 11:42 my_linux_kuaijiejian.txt
-rw-r--r-- 1 root root 384 12月 9 16:15 version.txt
-rw-r--r-- 1 root root 54 12月 10 17:18 os_file.txt
-rw-r--r-- 1 root root 661 12月 10 17:18 test_new.tar.gz

第二步:编程实现过程

os_shell.py
import os

# 判断不同系统,路径结尾添加路径分隔符
def add_slash(path):
if os.name == 'nt': # Windows系统
return path + '\\'
elif os.name == 'posix': # Linux/Unix系统
return path + '/'
else:
raise ValueError("不支持的操作系统") '''
第1步,根据tar包文件名,创建新文件夹
'''
print('==========1==========')
# 操作总目录
dir_path = '/root/test_tar_new' tarfile_name = "test.tar.gz"
# folder_name = "test"
# 提取文件名,去除文件后缀
folder_name = tarfile_name.split('.')[0]
print(folder_name)
if not os.path.exists(folder_name):
str_shell = 'mkdir ' + folder_name
print(str_shell)
# 执行命令
os.popen(str_shell)
print('第1步,根据tar包文件名,创建新文件夹,', folder_name)
# 新文件夹全路径
folder_path_new = os.path.join(dir_path, folder_name)
print(folder_path_new) '''
第2步,解压缩tar文件到新文件夹里
'''
print('==========2==========')
# 解压缩到指定目录 tar -xzvf test.tar.gz -C /root/test_tar_new/test/
str_shell = 'tar -xzvf ' + tarfile_name + ' -C ' + add_slash(folder_path_new)
print(str_shell)
# 执行命令
rsp = os.popen(str_shell)
print(rsp.read())
print('第2步,解压缩tar文件到新文件夹里')
# 进入新文件夹目录,列表展示文件
str_shell = 'ls -lrt ' + folder_path_new
print(str_shell)
# 执行命令
rsp = os.popen(str_shell)
print(rsp.read()) '''
第3步,拷贝更新的文件到到新文件夹里
'''
print('==========3==========')
os_file_name = 'os_file.txt'
new_file_path = os.path.join(dir_path, os_file_name)
print(new_file_path)
# 拷贝新文件到新目录
str_shell = 'cp ' + new_file_path + ' ' + folder_path_new
print(str_shell)
# 执行命令
os.popen(str_shell)
print('第3步,拷贝更新的文件到到新文件夹里')
# 进入新文件夹目录,列表展示文件
str_shell = 'ls -lrt ' + folder_path_new
print(str_shell)
# 执行命令
rsp = os.popen(str_shell)
print(rsp.read()) '''
第4步,打包并压缩新文件夹里的文件
'''
print('==========4==========')
# tarfile_name_new = "test_new.tar.gz"
tarfile_name_new = folder_name + "_new.tar.gz"
print(tarfile_name_new)
# 打包并压缩新的文件夹
print('打包并压缩新的文件夹,ing')
print(folder_path_new)
'''
多条命令需要使用 && 分隔
执行py脚本目录,与需要执行的tar命令目录不同,
需要先进入新目录下,再执行打包命令.
'''
str_shell = "cd " + folder_path_new + " && " + "tar -czvf " + tarfile_name_new + " ./*"
print(str_shell)
# 执行命令,并输出返回信息
rsp = os.popen(str_shell)
print(rsp.read())
# system执行命令,没有返回
# os.system(str_shell)
print('第4步,打包并压缩新文件夹里的文件')
# 进入新文件夹目录,列表展示文件
str_shell = 'ls -lrt ' + folder_path_new
print(str_shell)
# 执行命令
rsp = os.popen(str_shell)
print(rsp.read())
print('==========end==========')

第三步:放入指定目录运行效果

该目录放入需要处理的tar包文件,可以多个,循环调用上面方法即可,放入需要更新的文件,os_shell.py 程序文件。

办公自动化-批量更新tar包内文件的更多相关文章

  1. nexus批量更新jar包

    nexus批量更新jar包 学习了:https://blog.csdn.net/newtelcom/article/details/54379607 手动进行jar包的拷贝,在维护界面内进行批量更新:

  2. java通过CLASSPATH读取包内文件

    读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:InputStream in = ReadFile.class.getResourceAsSt ...

  3. 不解压查看tar.gz包内文件

    通过tar命令备份.解压缩文件,也可在不解压缩文件时查看包内的文件信息. 使用如下参数: tar -ztvf file.tar.gz 将列出所有包内的文件列表,包括目录 -z, --gzip, --g ...

  4. Java实现动态修改Jar包内文件内容

    import java.io.*; import java.util.Enumeration; import java.util.LinkedList; import java.util.List; ...

  5. 用pip批量更新所有包

    p.s在先,事实证明,把电脑里所有的python包一次性更新是吃力不讨好的工作,不过,这是另一回事,如果你一定要这么做,根据http://stackoverflow.com/questions/272 ...

  6. Flex SDK包内文件夹内容说明

    打开SDK目录,让我们看看SDK中都包含了哪些内容: ant包含Flex对Ant的支持库,JAR和Java源码都有,方便我们基于Ant完成对项目的构建 asdoc基于ASDOC我们可以很方便的生成代码 ...

  7. 使用Python批量更新服务器文件【新手必学】

    买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的h ...

  8. 批量更新sql |批量update sql

    图所示现需要批量更新table2表内字段Pwd更新userName对IP地址username与Ip对应关系table1所示 update table2 set pwd=table1.ip from t ...

  9. java无需解压zip压缩包直接读取包内的文件名(含中文)

    java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下: public static String ...

  10. 批量更新Postgresql的序列

    序列(sequence)是 PostgreSQL 中的一种对象,用于生成自动递增的唯一标识符.通常,序列会与表的自增主键一起使用,以确保每个新插入的行都有一个唯一的标识符.在某些情况下,可能需要更新序 ...

随机推荐

  1. Qt数据库应用19-图片转pdf

    一.前言 用户的需求真的是千奇百怪,刚做完不同页面横向纵向排版的需求,又来个需要图片转pdf的需求,提供静态函数直接使用. 经过这么些年的社会的毒打,我的原则是:用户是上帝和大爷,尽量站在用户的角度换 ...

  2. springboot的yml文件中如何配置redis?

    springboot的yml文件中如何配置redis? 解决方法: spring: #redis配置 redis: database: 0 timeout: 0 # Redis服务器地址 host: ...

  3. 即时通讯技术文集(第26期):实时音视频技术合集(Part1) [共16篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第26 期. [- 1 -] 实时语音聊天中的音频处理与编码压缩技术简述 [链接] http:/ ...

  4. LetsTalk_Android中引导用户加入白名单图

    --------------------------------

  5. Linux服务器环境安装mysql

    背景 1.安装环境:kvm虚拟机 2.运行环境:linux 3.架构:x86 4.安装mysql版本:mysql-5.7 1.安装准备 # Mysql官网 https://downloads.mysq ...

  6. G1原理—2.G1是如何提升分配对象效率

    大纲 1.G1的对象分配原理是怎样的 2.深入分析TLAB机制原理 3.借助TLAB分配对象的实现原理是什么 4.什么是快速分配 + 什么是慢速分配 5.大对象分配的过程 + 与TLAB的关系 6.救 ...

  7. GeoServer加载Arcgis切片服务

    使用GeoServer中的GeoWebCache加载Arcgis切片服务 下载安装 GeoServer和GeoWebCache的下载安装都非常简单,这里选择"独立于平台的二进制版本" ...

  8. nginx详细参数配置(史上最全)

    Nginx (engine x) 是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用 代理服务器 (TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人Igor Sysoev编写 ...

  9. Spring Cloud认知学习(一)--Eureka使用、Ribbon使用

    Spring Cloud是一个微服务架构,他有多种组件来管理微服务的方方面面.Spring Cloud是用于构建微服务开发和治理的框架的集合. Spring Cloud是最热门的Java技术毋庸置疑. ...

  10. 【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string

    本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7901522.html?templateId=1718516 现象 将数据通过SQ ...