复杂形态钢结构设计培训班

首页 非解构-公众号 利用Python帮助你批量打包YJK模型文件

利用Python帮助你批量打包YJK模型文件

一年又开始了,去年该出出去的图也都出出去了,又要回来画图了,去年画图画到腊月29,没来得及整理去年一整年做过的项目文件,刚上班没啥事儿抽点时间搞一搞吧。每年这个时候都该整理一波今年的项目资料了。我去~YJK文件堆了一大箩筐,很占硬盘啊。

这么密密麻麻一整溜的模型占的硬盘实在太大了,小编光调一个模型,备份了这么多,占用的硬盘不下80G。,很多朋友可能会选择Ctrl+A,Delete—–》—–》直接删库跑路。但是将来要是有一天需要追溯之前的模型,我们该怎么办?用YJK自带的打包功能?调过40多个模型,操作一波累死了,想想都想放弃。

今天小编就教大家如何用python批量保留每个模型中的一些必要的模型文件,同时将模型打包。

首先,我们利用YJK自带的模型打包功能,查看模型打包时的一些需要保留下来的文件:

大家可以看到,YJK打包后,保留的主要是以上的这些文件。我们可以直接通过python遍历以上的文件夹,删除那些YJK打包不必要的文件就可以了。以下就是python通过递归遍历每一个模型文件夹,跳过需要保留的文件,删除不需要的文件的代码:

import osimport statimport shutildir=r"D:2020ProjectNameM13-结构计算模型施工图阶段"list = os.listdir(r"D:2020ProjectNameM13-结构计算模型施工图阶段")#列出不删除的文件savedFiles=["yjkTransLoad.sav","spretobase2.dat","spretobase.dat","SPara.par","fea.dat","dsnctrl.ini","FileName.yjk","FileName.rel","FileName.pre","dsnjc.data"]defdelete_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 zipfileimport osdir=r"D:2020ProjectNameM13-结构计算模型施工图阶段"list=os.listdir(r"D:2020ProjectNameM13-结构计算模型施工图阶段")defzip_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_filesfor 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。通过这样的方式,我们即保留了原先的模型文件,又节约了硬盘空间。

小伙伴们又可以省出空间调今年的模型了。

划重点:斜杠青年招募

非解构 | 跨界建筑师招募

非解构 | 跨界结构工程师招募

往期回顾

用遗传算法做设计

Python爬虫实战——从大师网站自动下载项目图片

又又又又再一次创建Grasshopper电池

用python帮助你批量验算钢结构柱脚

用Rhino一键生成YJK模型—NSOrigin设计实践

本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2021/02/238433b51e/
上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部