一年又开始了,去年该出出去的图也都出出去了,又要回来画图了,去年画图画到正月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。通过这样的方式,我们即保留了原先的模型文件,又节约了硬盘空间。
小伙伴们又可以省出空间调今年的模型了。
0人已收藏
0人已打赏
免费2人已点赞
分享
盈建科
返回版块6306 条内容 · 189 人订阅
阅读下一篇
关于盈建科3.0筛选填充墙的问题求教高手,盈建科3.0是不是没有筛选填充墙的功能和查看填充墙尺寸属性的功能?刚刚发现自己好像布置错了 就是右边的菜单什么构件都有,就是没有填充墙(菜单中的“墙”,看过是剪力墙) 上图也是没有填充墙 我是用上图这个功能加填充墙的,不知道是不是新推出的功能不够完善
回帖成功
经验值 +10
全部回复(3 )
只看楼主 我来说两句@所有人,这个代码运行需要自己安装python或anaconda3,个人建议安装anaconda3,网上搜索一下安装教程就行。安装完后运行anaconda3里面的spyder,再调整spyder的当前目录,最后运行代码就行了,整体来说需要一定的基础。其实楼主最好还是用pyindtaller打包成exe文件发给大家执行就好了。
回复 举报
保存哪里运行呢,
完全不懂编程
回复 举报