收录于话题 一年又开始了,去年该出出去的图也都出出去了,又要回来画图了,去年画图画到正月29,没来得及整理去年一整年做过的项目文件,刚上班没啥事儿抽点时间搞一搞吧。每年这个时候都该整理一波今年的项目资料了。我去~YJK文件堆了一大箩筐,很占硬盘啊。 这么密密麻麻一整溜的模型占的硬盘实在太大了,小编光调一个模型,备份了这么多,占用的硬盘不下80G。,很多朋友可能会选择Ctrl A,Delete-----》-----》直接删库跑路。但是将来要是有一天需要追溯之前的模型,我们该怎么办?用YJK自带的打包功能?调过40多个模型,操作一波累死了,想想都想放弃。
一年又开始了,去年该出出去的图也都出出去了,又要回来画图了,去年画图画到正月29,没来得及整理去年一整年做过的项目文件,刚上班没啥事儿抽点时间搞一搞吧。每年这个时候都该整理一波今年的项目资料了。我去~YJK文件堆了一大箩筐,很占硬盘啊。
这么密密麻麻一整溜的模型占的硬盘实在太大了,小编光调一个模型,备份了这么多,占用的硬盘不下80G。,很多朋友可能会选择Ctrl A,Delete-----》-----》直接删库跑路。但是将来要是有一天需要追溯之前的模型,我们该怎么办?用YJK自带的打包功能?调过40多个模型,操作一波累死了,想想都想放弃。
今天小编就教大家如何用python批量保留每个模型中的一些必要的模型文件,同时将模型打包。
首先,我们利用YJK自带的模型打包功能,查看模型打包时的一些需要保留下来的文件:
大家可以看到,YJK打包后,保留的主要是以上的这些文件。我们可以直接通过python遍历以上的文件夹,删除那些YJK打包不必要的文件就可以了。以下就是python通过递归遍历每一个模型文件夹,跳过需要保留的文件,删除不需要的文件的代码:
import os
import stat
import shutil
dir=r"D:\2020\ProjectName\M1\3-结构计算模型\施工图阶段"
list = os.listdir(r"D:\2020\ProjectName\M1\3-结构计算模型\施工图阶段")
#列出不删除的文件
savedFiles=["yjkTransLoad.sav","spretobase2.dat","spretobase.dat","SPara.par","fea.dat","dsnctrl.ini","FileName.yjk","FileName.rel","FileName.pre","dsnjc.data"]
def delete_files(path, all_files):
# 首先遍历当前目录所有文件及文件夹
file_list = os.listdir(path)
# 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
cur_path = os.path.join(path, file)
#判断需要保留文件夹
if cur_path.find("保留结果")>=1:
continue
# 判断是否是文件夹
if os.path.isdir(cur_path):
show_files(cur_path, all_files)
else:
#判断是否为可删除文件
saved=False
for savedItem in savedFiles:
if file == savedItem:
saved=True
break
if saved:
continue
else:
#修改只读权限
os.chmod(cur_path, stat.S_IWRITE)
#删除文件
os.remove(cur_path)return all_files
# 传入空的list接收文件名
contents = delete_files(dir, [])
在不必要的模型文件删除后,我们可以python自带的zipfile库,来批量压缩每个模型文件夹,代码如下:
import zipfile
import os
dir=r"D:\2020\ProjectName\M1\3-结构计算模型\施工图阶段"
list = os.listdir(r"D:\2020\ProjectName\M1\3-结构计算模型\施工图阶段")
def zip_files(path, all_files):
# 首先遍历当前目录所有文件及文件夹
file_list = os.listdir(path)
# 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
cur_path = os.path.join(path, file)
# 判断是否是文件夹
if os.path.isdir(cur_path):
show_files(cur_path, all_files)
else:
all_files.append(cur_path)return all_files
for listItem in list:
cur_path = os.path.join(dir, listItem)
# 创建压缩文件
zipItem=zipfile.ZipFile(cur_path ".zip", mode='w')
# 将文件存入压缩文件
allfiles=zip_files(cur_path,[])
for fileItem in allfiles:
zipItem.write(fileItem)
以下就是通过python批量压缩过的文件夹:
通过这两步操作后,原先80G的模型文件成功被压缩到了只有860M。通过这样的方式,我们即保留了原先的模型文件,又节约了硬盘空间。
小伙伴们又可以省出空间调今年的模型了。