首页/文章/ 详情

ANSA二次开发_Python基础-OS模块

27天前浏览480

通过os模块查找文件夹内的指定后缀文件,并批量导入。

    import ansafrom ansa import baseimport osdef find_files(directory, extension):    for root, dirs, files in os.walk(directory):        for file in files:            if file.endswith(extension):                base.InputNastran((os.path.join(root, file)),  elements_id="offset")# 指定目录和文件后缀directory = 'D:/temp'extension = '.bdf'find_files(directory, extension)
    Python的os模块提供了丰富的方法用于与操作系统交互。包括执行文件系统操作,如创建和删除文件,目录,获取文件属性,处理路径等。方法太多了,这里仅列举部分文件相关的方法。
    以下介绍os模块的常用方法
    1. os.getcwd() 
     获取当前工作目录
      current_directory = os.getcwd()print(f"当前工作目录: {current_directory}")
      2. os.chdir(path) 
       改变当前工作目录
        os.chdir('/path/to/directory')print(f"目录已更改到: {os.getcwd()}")
        3. os.listdir(path='.') 
        列出指定目录下的所有文件和目录名
          files_and_directories = os.listdir('.') print(f"当前目录中的文件和目录: {files_and_directories}")
          4. os.mkdir(path, mode=0o777) 
           创建目录
            os.mkdir('new_directory')print("目录已创建")
            5.os.makedirs(name, mode=0o777, exist_ok=False) 
            递归创建目录
              os.makedirs('new_directory/sub_directory')print("递归目录已创建")
              6. os.rmdir(path) 
               删除目录
                os.rmdir('new_directory')print("目录已删除")
                7. os.remove(path) 
                删除文件
                  os.remove('file.txt')print("文件已删除")
                  8. os.rename(src, dst) 
                  重命名文件或目录
                    os.rename('old_name.txt', 'new_name.txt')print("文件已重命名")
                    9. os.stat(path) 
                    获取文件或目录的状态信息
                      stat_info = os.stat('example.txt')print(f"文件大小: {stat_info.st_size} 字节")print(f"最后修改时间: {stat_info.st_mtime}")
                      10. os.path.join(path, paths) 
                      合并路径,返回一个新路径
                        full_path = os.path.join('directory', 'subdirectory', 'file.txt')print(f"完整路径: {full_path}")
                        11. os.path.split(path) 
                        分割路径,返回路径和文件名
                          path, filename = os.path.split('/directory/subdirectory/file.txt')print(f"路径: {path}, 文件名: {filename}")
                          12. os.path.exists(path) 
                          检查路径是否存在
                            if os.path.exists('file.txt'):   print("文件存在")else:   print("文件不存在")
                            如果需要获取os模块下的所有方法,可以使用dir()函数列出os模块下的所有属性和方法。
                              import osfor t in dir(os) :    print(t)# DirEntry# EX_OK# F_OK# GenericAlias# Mapping# MutableMapping# O_APPEND# O_BINARY# O_CREAT# O_EXCL# O_NOINHERIT# O_RANDOM# O_RDONLY# O_RDWR# O_SEQUENTIAL# O_SHORT_LIVED# O_TEMPORARY# O_TEXT# O_TRUNC# O_WRONLY# P_DETACH# P_NOWAIT# P_NOWAITO# P_OVERLAY# P_WAIT# PathLike# R_OK# SEEK_CUR# SEEK_END# SEEK_SET# TMP_MAX# W_OK# X_OK# _AddedDllDirectory# _Environ# __all__# __builtins__# __doc__# __file__# __loader__# __name__# __package__# __spec__# _check_methods# _execvpe# _exists# _exit# _fspath# _get_exports_list# _walk# _wrap_close# abc# abort# access# add_dll_directory# altsep# chdir# chmod# close# closerange# cpu_count# curdir# defpath# device_encoding# devnull# dup# dup2# environ# error# execl# execle# execlp# execlpe# execv# execve# execvp# execvpe# extsep# fdopen# fsdecode# fsencode# fspath# fstat# fsync# ftruncate# get_exec_path# get_handle_inheritable# get_inheritable# get_terminal_size# getcwd# getcwdb# getenv# getlogin# getpid# getppid# isatty# kill# linesep# link# listdir# lseek# lstat# makedirs# mkdir# name# open# pardir# path# pathsep# pipe# popen# putenv# read# readlink# remove# removedirs# rename# renames# replace# rmdir# scandir# sep# set_handle_inheritable# set_inheritable# spawnl# spawnle# spawnv# spawnve# st# startfile# stat# stat_result# statvfs_result# strerror# supports_bytes_environ# supports_dir_fd# supports_effective_ids# supports_fd# supports_follow_symlinks# symlink# sys# system# terminal_size# times# times_result# truncate# umask# uname_result# unlink# unsetenv# urandom# utime# waitpid# waitstatus_to_exitcode# walk# write
                              来源:TodayCAEer
                              SystemNastran二次开发ANSApythonUM
                              著作权归作者所有,欢迎分享,未经许可,不得转载
                              首次发布时间:2024-08-14
                              最近编辑:27天前
                              TodayCAEer
                              本科 签名征集中
                              获赞 16粉丝 8文章 163课程 0
                              点赞
                              收藏
                              作者推荐

                              HyperStudy和Optimus中使用样本数据快速创建代理模型(3/3)

                              背景已有一组或一系列样本数据,如下图所示,目的是基于该组数据直接创建代理模型,以便于后续快速预测结果以及寻优。*上图数据中,第一列是ID,P1~P5为自变量(如模型中的料厚、尺寸等),Mass、NodeDisplacement、ElemStrain为因变量(也称响应,如模型的重量、计算结果的节点位移、单元应变等指标数据)工具本次将分别使用AltairHyperStudy和NoesisOptimus两款软件来基于数据快速创建代理模型。##################################################在前两篇文章中(HyperStudy和Optimus中使用样本数据快速创建代理模型(1/3)、HyperStudy和Optimus中使用样本数据快速创建代理模型(2/3)),分别介绍了数据准备以及如何在HyperStudy导入数据模型并创建代理模型,以及相关的模型数据查看等功能,本文将介绍如何在Optimus软件中训练代理模型、模型验证等功能。##################################################引言在第一篇文章(HyperStudy和Optimus中使用样本数据快速创建代理模型(1/3))的数据准备章节,介绍了对于Optimus软件处理,需要的数据格式,此处再回顾一下:1)在文本编辑工具中,将csv文件中的逗号替换成空格;2)在文件开头插入两行:·第一行填入自变量的数量,本例中有5个自变量,固第一行填入数字“5”;·第二行填入因变量的数量,本例中有3个因变量,固第二行填入数字“3”。最终处理好的数据应该如下图所示:模型训练-Optimus1、新建项目:打开Optimus软件界面,点击左上角“新建项目”按钮,配置项目路径:2、导入数据:选择“方法”→“导入表格”,选择准备好的数据文件(*.csv):3、此时项目树的“方法”节点下,会新增一个节点,该节点以数据文件的文件名命名,鼠标右键此节点:“后处理”→“结果列表”,可以查看数据表格,表格中,软件已经按照我们准备的数据文件中约定的自变量数量和因变量数量进行了处理,如下表所示,“计算点序号”和自变量P1~P5之间有粗线隔开,自变量P1~P5和因变量Mass...之间有粗线隔开:4、截止此步,Optimus软件中已经可以基于导入的数据进行相应的后处理,如下图所示的相关性表格(“后处理”→“相关性”)、散点相关图(“后处理”→“散点相关图”)、散点图、3维散点图、自组织映射图、气泡图、平行坐标图等:5、言归正传,开始创建代理模型,鼠标右键导入的数据节点,选择“新建模型”:弹出如下图所示对话框,在对话框中选择算法分类(1),选择具体的算法(2):在Optimus中,有如下四种分类的算法:其中:1)近似模型中有如下算法:2)插值模型中有如下算法:3)机器学习模型中有如下算法:4)集合模型中有如下算法:用户可根据实际需求选择适合的算法,本案例中,采用插值模型中的克里金模型,常用情况下其余参数保持默认值即可,配置完成后,点击对话框右下角的“执行”按钮,便可开始代理模型的创建:6、完成代理模型的创建后,模型树中会在导入的数据节点下新生成一个模型节点,如下图所示:7、鼠标右键该节点,可对模型进行后处理,如下图所示:如下图所示为模型三维图:X(P2)、Y(P5)、Z(NodeDisplacement)8、有了代理模型以后,可以右键数据节点,点击“生成工作流”:软件将创建一个只有输入参数列表和输出参数列表的工作流:同时,左侧模型树中也会新产生一个如下图所示的工作流节点:其中,输入参数列表中自动创建了5个输入参数的信息,此时可根据需求进行修改:输出参数列表中,自动创建了三个输出参数:9、数据验证:右键新生成的工作流节点,“新建方法”→“表格”:弹出如下对话框,我们需要验证10组数据,则在“计算次数”框中输入10,回车,下方表格自动生成10行,从表格工具中可直接将10组P1~P5的自变量数据复制粘贴到对话框的表格中:切换到“输出参数”界面(1),将输出参数的“求解”列,全部选择为之前所创建的“模型1”,代表此次表格计算,将使用对应的代理模型计算结果,最后点击对话框右下角的“执行”按钮:此时,左侧树节点里面会生成一个对应的“表格计算1”的节点,计算完成后字体会变成绿色(计算过程中为斜体):右键该节点,点击“载入结果”,节点文字颜色变黑,如下图所示,右键该节点,“后处理”→“结果列表”,可以查看测试结果数据,下图红色方框内的结果数据就是基于代理模型计算得到的结果数据:同理,也可以进行相关的后处理数据查看,此处不再赘述。至此,便完成了Optimus软件中的代理模型创建、数据验证、数据后处理等介绍。###############################################相同的伏笔:代理模型训练完成以后,如何保存并在以后的工作中直接使用,以用于快速预测结果数据。(将在后续其他系列文章中介绍,敬请关注,也欢迎大家私信交流,感谢。)###############################################“本系列是基于已有的样本数据直接在软件中创建代理模型,在后续的文章中,将陆续介绍如何在这两款软件中通过流程自动化去获取样本数据,其过程包括模型参数化、求解器调用、结果数据提取、DOE采样、代理模型创建、寻优等。敬请期待”=============点关注,不迷路=============最后,大家有什么想了解的,也可以私信留言,感谢各位的支持。来源:TodayCAEer

                              未登录
                              还没有评论
                              课程
                              培训
                              服务
                              行家
                              VIP会员 学习 福利任务 兑换礼品
                              下载APP
                              联系我们
                              帮助与反馈