首页 > 其他分享 >办公自动化-批量更新tar包内文件

办公自动化-批量更新tar包内文件

时间:2023-12-10 17:55:06浏览次数:32  
标签:办公自动化 tar 包内 os -- print new root

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

比如,我目前遇到的一个事项,需要更新很多个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,包内,os,--,print,new,root
From: https://www.cnblogs.com/xh2023/p/17892981.html

相关文章

  • 11.6k star,真的吹爆这款开源插件,太强了!!
    这款插件可以一键将你看到的网页内容统统下载下来,整合到本地作为一个html文件,还可以针对部分内容进行下载,也可以对下载内容添加笔记、文本高亮等。支持目前主流的大部分浏览器。1SingleFile简介如果你直接另存一个html页面的话,很多时候页面内容会变得很乱,部分资源也会没有保......
  • ApplicationContext is unlikely to start due to a @ComponentScan of the default p
    springboot警告:ApplicationContextisunlikelytostartduetoa@ComponentScanofthedefaultpackage解决办法:1、一般发出这个警告的原因是你把启动类直接放在的src目录下面。2、你需要在src目录下面再建一个包,然后把启动类放到下面。3、或者你错将启动类放到java文件中了......
  • xv6 start
    操作系统必须满足三个要求:多路,隔离,交流。用户模式和管理模式强隔离要求应用程序和操作系统之间有一个硬边界。如果应用程序出错,我们不希望操作系统失败或其他应用程序出错,相反操作系统应该能够清理失败的应用程序并继续运行其他应用程序。为了实现强隔离,操作系统必须安排应用程......
  • hszxoj 矿场搭建 [tarjan]
    hszxoj矿场搭建题目描述原题来自:HNOI2012煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道......
  • 13.2k star,推荐一款开源免费的windows软件,强大!高级
    来!先看下效果,具体介绍见下文Czkawka是一款用Rust语言编写的多功能应用程序,可以帮助用户查找和删除计算机中的重复文件、空文件夹、相似图片等不必要的文件。本文将介绍Czkawka的工具简介、如何安装使用、功能特点、类似软件等,并进行总结。工具简介Czkawka(波兰语发音为tch•kav......
  • 路径规划算法 - 求解最短路径 - A*(A-Star)算法
    Dijkstra(迪杰斯特拉)算法A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。A*算法是一个“搜索算法”,实质上是广度优先搜索算法(BFS)的优化A*算法的作用是“求解最短路径......
  • uniapp滑动页面时警告Unable to preventDefault inside passive event listener due t
    翻译:没有添加被动事件监听器来阻止’touchstart‘事件,请考虑添加事件管理者’passive’,以使页面更加流畅。原因:由于浏览器必须要在执行事件处理函数之后,才能知道有没有掉用过 preventDefault(),这就导致了浏览器不能及时响应滚动,略有延迟。所以为了让页面滚动的效果如丝般顺滑......
  • textarea文本居中的问题
    核心:水杯居中用text-align:center;垂直居中用(其中数字30相同就行不一定是30)height:30px;line-height:30px;更多学习,可参考 https://www.python100.com/html/57600.html个人实战案例.myTextArea{border:0pxsolid;overflow:auto......
  • 11K+ Star!图解计算机网络、操作系统、计算机组成、数据库!
    大家好,我是Java陈序员。俗话说得好,面试造火箭,入职拧螺丝。我们在工作中,其实很少用到一些计算机底层知识,往往只要编码完事。但是,知其然还要知其所以然,我们不仅要做一个合格的“CV工程师”,更是要掌握一些底层原理!计算机基础知识,作为计算机的底层原理,往往是晦涩难懂,如果没用心的......
  • Технология Huawei StarLight
    «Технологиязвездныхвспышек»,которуюмыпредставляемнаэтотраз,неотноситсяктехнологии,связаннойсявлениемзвездныхвспышеквастро......