python对文本操作,生成可执行文件

.exe文件主要包含pingmianF.py文件和read_inp_auto.py文件

 

 

实现效果

 

 

代码

read_inp_auto.py

#-*- coding: utf-8 -*-
import re
import sys
import os
import os.path
import time
import pingmianF
from pingmianF import vector
import numpy as np
from tkinter import messagebox
from tkinter import filedialogls_weldline = []
ls_welddomain = []
ls1 = []
ls2 = []
def popupmsg(msg):messagebox.showerror('Warning', msg)#生成资源文件目录访问路径
def resource_path(relative_path):if getattr(sys, 'frozen', False): #是否Bundle Resourcebase_path = sys._MEIPASSelse:base_path = os.path.abspath(".")return os.path.join(base_path, relative_path)
def automation(path_inpname):#访问res文件夹下数据.txt的内容filename = resource_path(os.path.join("file",path_inpname))with open(filename,'r',encoding='utf-8') as fa:for line in fa:if "WELDLINE_" in line:ls1.append(line)if "WELDDOMAIN_" in line:ls2.append(line)print(ls1)print(ls2)# lines = fa.readlines()# print(lines)# f.close()# fa.close()# # with open ('project_incoordinata.txt','r',encoding = 'utf8') as f:# fa = open(r"project_1.inp", 'r',encoding="utf-8")# fb = open("weldline_out.txt",'w')# fc = open("welddomain_out.txt",'w')# # fd = open("all_node_coordinate_out.txt",'w')# for line in fa:##     if "WELDLINE_" in line:#         ls1.append(line)#     if "WELDDOMAIN_"in line:#         ls2.append(line)# print(ls1)# print(ls2)# ['*NSET, NSET=Closed_2_weldline_126578_143528\n', '*NSET, NSET=Closed_2_weldline_126051_144027\n', '*NSET, NSET=Open_3_weldline_126776_189374\n']# ['*ELSET, ELSET=Closed_2_welddomain_318468\n', '*ELSET, ELSET=Closed_2_welddomain_318666\n', '*ELSET, ELSET=Open_3_welddomain_628339\n']for i in range(0,len(ls1)):ls_weldline.append(ls1[i].strip('\n').split('=')[-1])#print(ls_weldline)for j in range(0,len(ls2)):# print(ls_welddomain[j])ls_welddomain.append(ls2[j].strip('\n').split('=')[-1])print(ls_welddomain)print(len(ls_welddomain))# ['Closed_2_weldline_126578_143528', 'Closed_2_weldline_126051_144027', 'Open_3_weldline_126776_189374']# ['Closed_2_welddomain_318468', 'Closed_2_welddomain_318666', 'Open_3_welddomain_628339']# fb.write(str(ls_weldline))# fc.write(str(ls_welddomain))# 从inp里面提取出需要的字符串存入,ls_weldline,ls_welddomainwelddomain_element = []ls_element = []for k in range(0,len(ls_welddomain)):welddomain_element.append(ls_welddomain[k].strip('\n').split('_')[-1])print("welddomain_element is"+str(welddomain_element))print(len(welddomain_element))# ['318468', '318666', '628339']# 提取每个热影响区的起始单元welddomain_ele_node = []filename = resource_path(os.path.join("file",path_inpname))print(filename)with open(filename,'r',encoding='utf-8') as f:# with open('project_1.inp', 'r') as f:for line in f:for j in range(0, len(welddomain_element)):if welddomain_element[j] in line:welddomain_ele_node.append(line)print(welddomain_ele_node )print(len(welddomain_ele_node) )# f.close()# print(welddomain_ele_node)# print(len(welddomain_ele_node))welddomain_ele = []welddomain_node = []welddomain_ele = welddomain_ele_node [0:len(welddomain_element)]print(welddomain_ele)print(len(welddomain_ele))# ['    628339,    126776,    189374,    189375,    189198,    189434,    189435,    189433,\n', '    318666,    144028,    127140,    126051,    144027,    144603,    144602,    144604,\n', '    318468,    143529,    143528,    126578,    126990,    144519,    144521,    144520,\n']#提取单元所在行包含的八个节点for j in range(0, len(welddomain_ele)):welddomain_ele[j] = welddomain_ele[j].strip( ).strip('\n').split(',')[1:4]# print(welddomain_ele)specprint(len(welddomain_ele))# [['    126776', '    189374', '    189375'], ['    144028', '    127140', '    126051'], ['    143529', '    143528', '    126578']]# 提取单元所包含节点里面的前三个节点,用来求取法向量# print(welddomain_ele[0][0])#获取节点坐标文档import refilename = resource_path(os.path.join("file",path_inpname))print(filename)node_coordinate = []with open(filename,'r',encoding='utf-8') as fa:# node_coordinate = []# with open('project_1.inp', 'r') as f:data = fa.read().splitlines()idx1 = data.index('*NODE,NSET=NALL')idx2 = data.index('**')output = data[idx1 + 1 : idx2]# fa.close()filename = resource_path(os.path.join("file","project_incoordinata.txt"))print(filename)node_coordinate = []# with open(filename,'r',encoding='utf-8') as fa:with open (filename,'w',encoding = 'utf8') as f:f.write('\n'.join(output))project_incoordinata = []# f.close()with open (filename,'r',encoding = 'utf8') as f:lines = f.readlines()for line in lines:line = line.strip('\n').split(',')project_incoordinata.append(line)print(len(project_incoordinata))print(project_incoordinata)# f.close()#['    126776', '    189374', '    189375', '    144028', '    127140', '    126051', '    143529', '    143528', '    126578']node = []print(len(welddomain_ele))for j in range (0,len(welddomain_ele)):for k in range(0,3):node.append(welddomain_ele[j][k])print(node)#['    126776', '    189374', '    189375', '    144028', '    127140', '    126051', '    143529', '    143528', '    126578']with open (filename,'r',encoding = 'utf8') as f:for line in f.readlines():str1 = line.split(',')[0]int_str1 = int(str1)for j in range(0,len(node)):if int_str1 == int(node[j]):node_coordinate.append(line)# f.close()# print(node_coordinate)#node_coordinate#['126051,        -213.32157,      -23.94757,       55.92702\n',# '126578,         -49.68242,      -23.94821,      -50.66072\n',# '126776,        -114.42335,      -23.94608,      -46.53174\n',# '127140,        -212.51184,      -23.98995,       56.26252\n',# '143528,         -48.68259,      -23.94195,      -50.67784\n',# '143529,         -48.67345,      -23.97157,      -50.15527\n',# '144028,        -212.89419,      -23.97285,       57.18638\n',# '189374,        -115.39657,      -23.94313,      -46.30191\n',# '189375,        -115.09989,      -23.98079,      -45.04446\n']node_list = []print(len(node))print(len(node_coordinate))for i in range (0,len(node)):for j in range (0,len(node_coordinate)):str1 = node_coordinate[j].strip(' ').split(',')[0]str2 = node[i].strip(' ')# print(str1)# print(str2)str3 = node_coordinate[j].strip(' ').strip('\n').split(',')[1:4]if int(str1) == int(str2):node_list.append(str3)print(node_list)# print(node_list[0])# node_list = np.array(node_list)# print(node_list)# for i in range(0,len(node_list)):#     node_list[i] = node_list[i].astype(np.float64)## print(node_list)##['126776,        -114.42335,      -23.94608,      -46.53174\n',# '189374,        -115.39657,      -23.94313,      -46.30191\n',# '189375,        -115.09989,      -23.98079,      -45.04446\n',# '144028,        -212.89419,      -23.97285,       57.18638\n',# '127140,        -212.51184,      -23.98995,       56.26252\n',# '126051,        -213.32157,      -23.94757,       55.92702\n',# '143529,         -48.67345,      -23.97157,      -50.15527\n',# '143528,         -48.68259,      -23.94195,      -50.67784\n',# '126578,         -49.68242,      -23.94821,      -50.66072\n']# [['        -114.42335', '      -23.94608', '      -46.53174'],# ['        -115.39657', '      -23.94313', '      -46.30191'],# ['        -115.09989', '      -23.98079', '      -45.04446'],# ['        -212.89419', '      -23.97285', '       57.18638'],# ['        -212.51184', '      -23.98995', '       56.26252'],# ['        -213.32157', '      -23.94757', '       55.92702'],# ['         -48.67345', '      -23.97157', '      -50.15527'],# ['         -48.68259', '      -23.94195', '      -50.67784'],# ['         -49.68242', '      -23.94821', '      -50.66072']]# fa.close()## f.close()# f1 = open('weld-current - 副本1.txt', 'r')# f1 = open('weld-current - 副本1.txt', 'w')# f2 = open('weld-current_modify.wdf', 'a')filename1 = resource_path(os.path.join("file","weld-current_modify.wdf"))os.remove(filename1)filename2 = resource_path(os.path.join("file","weld_current.txt"))f1 = open(filename1,'a',encoding='utf-8')f1.write('<weld_definition>\n')# f1.close()# f2 = open('weld-current_modify.wdf', 'a')#import os#try:#except# f2.write('<weld_definition>\n')# for line in f1:# def Macro1(test_wdomain,test_wline):j = 0with open(filename2,'r',encoding='utf-8') as f2:# content = f1.read()# f1.seek(0,0)# f1.write('<weld_definition>\n'+content)for i in range(0,len(ls_welddomain)):lines = f2.read()f2.seek(0)# if '%welddomain' in line:# f1.write(line.replace('%welddomain','welddomain1234_4567'))## lines = lines.replace('%Line_Weld','weld_line[i]')# print('weld_line[i]')lines = lines.replace('%New_Line',ls_weldline[i].upper())lines = lines.replace('%plate_thickness', ls_weldline[i].strip('\n').split('_')[1])lines = lines.replace('%welddomain',"PART-1-1_"+ ls_welddomain[i].upper())lines = lines.replace('%start_element', ls_welddomain[i].strip('\n').split('_')[-1])lines = lines.replace('%reference_normal',str(pingmianF.vector(node_list[j],node_list[j+1],node_list[j+2])))print(vector(node_list[j], node_list[j + 1], node_list[j + 2]))# if '%weldline' in line:# f1.write(line.replace('%weldline', 'weldline1234_4567'))lines = lines.replace('%weldline', "PART-1-1_"+ ls_weldline[i].upper()+"_nodal")lines = lines.replace('%start_node', ls_weldline[i].strip('\n').split('_')[-1])lines = lines.replace('%weld_type', ls_welddomain[i].strip('\n').split('_')[0].capitalize())f1.write(lines)j = j+3f1.write('</weld_definition>')f1.close()f2.close()fa.close()f.close()
if __name__ == '__main__':path_inpname = filedialog.askopenfilenames(title="Select Text File",filetypes=[("INP File", "*.inp"), ("All Files", "*.*")])# print(path_inpname)automation(path_inpname[0])# try:#     automation(path_inpname[0])# except:#     popupmsg('工具运行不成功!')
# f2.close()

pingmianF.py

# import numpy as np
#
# def compute_normal_vector(point1, point2, point3):
#     vector1 = np.array(point2) - np.array(point1)
#     vector2 = np.array(point3) - np.array(point1)
#     normal_vector = np.cross(vector1, vector2)
#     return normal_vector
#
# # 示例输入
# point1 = [-114.42335,      -23.94608,      -46.53174]
# point2 = [-115.39657,      -23.94313,      -46.30191]
# point3 = [-115.09989,      -23.98079,      -45.04446]
#
# normal_vector = compute_normal_vector(point1, point2, point3)
# print(normal_vector)
# # 在上面的代码示例中,我们使用了numpy库来进行向量的计算。
# # compute_normal_vector函数接受三个点作为输入,然后使用numpy库中的array函数将这些点转换为数组。
# # 接着,我们计算两个向量vector1和vector2,它们分别是point2-point1和point3-point1。
# # 最后,我们使用numpy库中的cross函数计算向量的叉积,得到平面的法向量。# import read_inp_auto as read_inp
import numpy as npp1 =['        -114.42335', '      -23.94608', '      -46.53174']
p2 =['        -115.39657', '      -23.94313', '      -46.30191']
p3 =['        -115.09989', '      -23.98079', '      -45.04446']def vector(p1,p2,p3):# 定义三个点的坐标point1 = np.array(p1)point2 = np.array(p2)point3 = np.array(p3)float_point1 = point1.astype(np.float64)float_point2 = point2.astype(np.float64)float_point3 = point3.astype(np.float64)# 计算两个向量vector1 = float_point2 - float_point1vector2 = float_point3 - float_point1# 计算法向量normal_vector = np.cross(vector1, vector2)# 归一化为单位向量unit_normal_vector = normal_vector / np.linalg.norm(normal_vector)vector_final =",".join(("{:.4f}".format(num) for num in unit_normal_vector))return vector_final
# print(vector(p1,p2,p3))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GDPU JavaWeb EL与JSTL

标签化&#xff0c;可以简化百分号的繁忙。 标签库配置 先下载好jstl标签库&#xff0c;然后放到lib。接着&#xff0c;要让编译器识别到&#xff0c;因此要在模块配置依赖&#xff0c;这里导jar包都得注意一下模块依赖。 也可以在libraries项目库设置。 EL与JSTL查询图书 在…

2024华为OD机试真题-攀登者1-C++(C卷D卷)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。 其中数组元素0代表地面。 例如: [0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图, 地图中有两个山脉位置分别为1,2,3,4,5 …

设计模式(十)结构型模式---享元模式

文章目录 享元模式简介结构UML图具体实现UML图代码实现 享元模式简介 享元模式&#xff08;fly weight pattern&#xff09;主要是通过共享对象来减少系统中对象的数量&#xff0c;其本质就是缓存共享对象&#xff0c;降低内存消耗。享元模式将需要重复使用的对象分为两个状态…

大学生Python自救课程总结

因为一些事情的缘故&#xff0c;我已经几乎没有更新很久了&#xff0c;然后现在快到期末了&#xff0c;不知道各位学习python的同志们慌不慌【坏笑】。 本学期&#xff0c;我只是简单的讲了讲python的基础用法。当然&#xff0c;可能有些地方总结的并不全面&#xff0c;很多知…

MyBatis中的接口代理机制及其使用

1. MyBatis中的接口代理机制及其使用 文章目录 1. MyBatis中的接口代理机制及其使用2. 实操2.1 准备工作2.2 insert 增加操作2.3 delete 删除操作2.4 update 修改操作2.5 select 查询一条记录操作2.6 select 查询多条记录操作 3. 总结&#xff1a;4. 最后&#xff1a; MyBatis …

HackTheBox-Machines--Nineveh

Nineveh测试过程 1 信息收集 NMAP 端口扫描 80 端口 80端口是服务器的默认页面&#xff0c;无可利用功能点&#xff0c;源代码没有可利用的敏感信息 目录扫描 1.http://10.129.25.123/department 访问/department目录跳转到登录页面&#xff0c;尝试暴力破解&#xff0c;获取…

嵌入式期末复习

一、选择题&#xff08;20&#xff09; 二、判断题&#xff08;10&#xff09; 三、填空题&#xff08;10&#xff09; 主机-目标机的文件传输方式主要有串口传输方式、网络传输方式、USB接口传输方式、JTAG接口传输方式、移动存储设备方式。常用的远程调试技术主要有 插桩/st…

NVIDIA NeMo - 训练本地化多语种 LLM

本文转载自&#xff1a;使用 NVIDIA NeMo 训练本地化多语种 LLM &#xff08;2024年 5月 17日 By Nicole Luo and Amit Bleiweiss 第 1 部分 https://developer.nvidia.com/zh-cn/blog/training-localized-multilingual-llms-with-nvidia-nemo-part-1/ 第 2 部分 https://deve…

Cocos入门2:软件安装

Cocos Creator的安装教程如下&#xff0c;按照步骤进行&#xff0c;可以帮助您顺利安装Cocos Creator&#xff1a; 一、下载Cocos Dashboard 访问Cocos官网&#xff1a;前往Cocos Creator的官方网站&#xff08;https://www.cocos.com/creator/&#xff09;。 下载Cocos Dash…

重生之 SpringBoot3 入门保姆级学习(14、内容协商基础简介)

重生之 SpringBoot3 入门保姆级学习&#xff08;14、内容协商基础简介&#xff09; 3.3 内容协商3.3.1 基础简介3.3.2 演示效果 3.3 内容协商 3.3.1 基础简介 默认规则 基于请求头的内容协商&#xff08;默认开启&#xff09; 客户端向服务器发送请求&#xff0c;携带 HTTP 标…

20240601使用iperf3在Toybrick的TB-RK3588开发板上跑预编译的Android12测网速

20240601使用iperf3在Toybrick的TB-RK3588开发板上跑预编译的Android12测网速 2024/6/1 20:39 【常见问题】给TB-RK3588开发板刷机Androidd12之后&#xff0c;如果刷机线type-C不拔掉。可能起不来&#xff01; 搞得我都以为板子坏了呢&#xff01; rootrootrootroot-ThinkBook-…

Linux[高级管理]——使用源码包编译安装Apache网站

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年5月31日14点20分 &#x1f004;️文章质量&#xff1a;96分 在Linux系统上编译和安装Apache HTTP Server是…

搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四)

上一篇&#xff1a;搭建基于Django的博客系统增加广告轮播图&#xff08;三&#xff09; 下一篇&#xff1a;基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能&#xff08;五&#xff09; Sqlite3数据库迁移到MySQL 数据库 迁移原因 Django 的内置数据库 SQL…

动态规划求多段图的最短路径

一、基本思想 动态规划法将待求解问题分解成若干个相互重叠的子问题&#xff0c;每个子问题相互关联&#xff1b;动态规划法与分治法的区别就在于分治法的子问题相互不关联&#xff0c;而动态规划法的子问题是相互关联的&#xff0c;且有重叠的部分。 二、算法分析 动态规划…

性能优化相关:nginx负载均衡中的动静分离

结合上次博客&#xff1a;正向代理和反向代理 什么是动静分离&#xff1a; 静态资源&#xff1a;包含css文件、图片、js文件、配置文件等 动态资源&#xff1a;脚本处理等 更改/usr/local/nginx/conf下的nginx.conf文件&#xff0c;设置动静目录&#xff0c;添加如下 locatio…

Ubuntu——配置安装服务

目录 一、安装JDK 二、安装IntelliJ IDEA 三、安装Docker-ce 1.环境清理以免有遗留组件 2.安装Docker 3.测试 #检查版本 sudo cat /etc/issue 一、安装JDK Ubuntu提供了一个名为apt的软件包管理工具&#xff0c;通过它可以使用命令行的方式安装、更新和删除软件包。 使用…

Day03 左侧菜单数据绑定

一.左侧菜单数据绑定 1.首先&#xff0c;进行项目结构塔建。按照Prism 框架约定&#xff0c;要使用自动查找绑定功能。即View &#xff08;视图&#xff09;中自动查找并绑定到对应的ViewModel&#xff08;视图模型&#xff0c;处理视图业务逻辑&#xff09;。就需要在项目中按…

大数据在金融行业的深度应用与未来展望

一、引言 随着信息技术的迅猛发展,大数据已经成为推动金融行业创新的重要力量。从精准营销、个性化服务到风险管理和产品创新,大数据的应用正在不断重塑金融行业的格局。本文将深入探讨大数据在金融行业的深度应用,分析其特征特点、解决方案以及面临的挑战与机遇,并展望其…

LeetCode刷题之HOT100之搜索旋转排序数组

2024/6/2 雨一直下&#xff0c;一个上午都在床上趴着看完了《百年孤独》&#xff0c;撑伞去吃了个饭&#xff0c;又回到了宿舍。打开许久未开的老电脑&#xff0c;准备做题了。《百年孤独》讲了什么&#xff0c;想表达什么&#xff0c;想给读者留下什么&#xff0c;我不知道&am…

无法拒绝!GPT-4o 完美适配安卓手机,畅享丝滑体验

无法拒绝&#xff01;GPT-4o 完美适配安卓手机&#xff0c;畅享丝滑体验 前言 人工智能的飞速发展&#xff0c;给我们的生活带来了前所未有的便利。作为AI技术的代表之一&#xff0c;GPT凭借其强大的自然语言处理能力&#xff0c;已经成为许多用户日常生活和工作中的得力助手…