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

比如,我目前遇到的一个事项,需要更新很多个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. [转]CLion安装及无限试用

    Clion安装及无限试用:链接:https://pan.baidu.com/s/1mreUx5QyS4nkVQMOhdjf7g提取码:ylqw 翻译 搜索 复制

  2. [转]Vue3.0和Vue2.0的区别

    Vue3.0和Vue2.0的区别默认进行懒观察(lazy observation).在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者.当数据很大时,这可能会在页面载入时造成明显的性能压力 ...

  3. Docker安装Redis并设置密码

    1. 镜像下载 docker pull redis 2. 创建目录 mkdir -p /etc/redis/redis.conf mkdir -p /data/redis 3. 启动容器 docker ...

  4. tomcat常用配置详解和优化方法-copy

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  5. ThreadPoolExecutor详解及线程池优化

    前言ThreadPoolExecutor在concurrent包下,是我们最常用的类之一.无论是做大数据的,还是写业务开发,对其透彻的理解以及如何发挥更好的性能,成为了我们在更好的coding道路上必 ...

  6. Fo-dicom通过C-store方式发送图片

    1 using Dicom.Network; 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 us ...

  7. Ubuntu更改用户名

    网上给出Ubuntu更改用户名步骤: 1.进入Ubuntu,打开一个终端,输入 sudo su转为root用户. 注意,必须先转为root用户!!! 2.gedit /etc/passwd ,找到代表 ...

  8. MPC收藏

    收集有关MPC的优秀文章,方便查阅. 同态加密 原理 介绍 程序员的干货!核心理论之同态加密 https://mp.weixin.qq.com/s/1uH0UjnS_Mo8ShXJ-16UXw BGV ...

  9. C++:Boost库

    今日安装一个PSI库时,需要boost库,在此认识一下boost库,转载:macOS 中Boost的安装和使用 介绍 Boost是一个功能强大,构造精良,跨越平台,代码开源,完全免费的C++程序库. ...

  10. 干掉visio,这个画图神器真的绝了!!!

    前言 看过我以往文章的小伙伴可能会发现,我的大部分文章都有很多配图.我的文章风格是图文相结合,更便于大家理解. 最近有很多小伙伴发私信问我:文章中的图是用什么工具画的.他们觉得我画的图风格挺小清新的, ...