优化python代码
我有以下代码:优化python代码,python,optimization,Python,Optimization,我有以下代码: inputFile = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp', 'r') for line in inputFile: fileData.append([x.strip() for x in line.split(',')]) fel=0 for row,data in enumerate(fileData): if data[0]=
inputFile = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp', 'r')
for line in inputFile:
fileData.append([x.strip() for x in line.split(',')])
fel=0
for row,data in enumerate(fileData):
if data[0]=='*Node':
row_nodes = row #number of the row when data='*Node'
if data[0]=='*Element' and fel==0:
row_elements2 = row
fel=1
for row,data in enumerate(fileData[row_nodes + 1:row_elements2]):
nodes.append(data) #data between '*Nodes' and '*Element'
但是,它在外部程序的python interpeter中运行非常慢(分钟)(我必须在这里运行脚本,因为我需要访问该程序生成的结果数据库)。我如何优化它
编辑:
我在代码末尾关闭
inputFile
:inputFile.close()
也许您可以按照正则表达式的思路思考:
如果我理解正确的话,您希望获取某个文件中关键字*节点和*元素之间的数据,对吗
嗯,你可以试试这样:
import re
S = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp','r').read()
Data = re.finditer( "\*Nonde([.\n]*?)\*Element", S )
这将为您提供在标记“*Node”和“*Elements”之间找到的字符串列表
我希望这就是你想要做的。
干杯也许你可以按照正则表达式的思路思考: 如果我理解正确的话,您希望获取某个文件中关键字*节点和*元素之间的数据,对吗 嗯,你可以试试这样:
import re
S = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp','r').read()
Data = re.finditer( "\*Nonde([.\n]*?)\*Element", S )
这将为您提供在标记“*Node”和“*Elements”之间找到的字符串列表
我希望这就是你想要做的。
干杯如果我理解得很好,首先逐行存储文件,然后搜索第一次出现的“*元素”和最后出现的“*节点”,最后存储它们之间的内容 我看到的一个优化是,您可以从3个文件解析转换为一个文件解析:
inputFile = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp', 'r')
go_storage = False
nodes = None
for line in inputFile:
if line[0] == "*Node":
# Reset what has already been memorized
nodes = list()
go_storage = True
elif line[0] == "*Element":
break
elif go_storage:
nodes.append(line)
如果我理解得很好,首先逐行存储文件,然后搜索第一次出现的“*元素”和最后一次出现的“*节点”,最后存储它们之间的内容 我看到的一个优化是,您可以从3个文件解析转换为一个文件解析:
inputFile = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp', 'r')
go_storage = False
nodes = None
for line in inputFile:
if line[0] == "*Node":
# Reset what has already been memorized
nodes = list()
go_storage = True
elif line[0] == "*Element":
break
elif go_storage:
nodes.append(line)
…
中有什么?文件有多大?你确定你在读完文件后是否正确地关闭了文件?@ Patashu,JoZas:问题编辑。你是被迫用Python写的,还是你能用更快的语言写它?@ PATASU:我可以用C++写…但是我必须学习它。…
?文件有多大?你确定你在读完文件后是否正确地关闭了文件?@ Patashu,JoZas:问题编辑。你是被迫用Python写的,还是你能用更快的语言写它?@ PATASU:我可以用C++写…但我必须学会。