第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

優(yōu)化python代碼

優(yōu)化python代碼

猛跑小豬 2021-03-16 13:13:05
我有以下代碼:    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交互程序中運(yùn)行非常慢(幾分鐘)(我必須在這里運(yùn)行腳本,因?yàn)槲倚枰L問該程序產(chǎn)生的結(jié)果數(shù)據(jù)庫)。我該如何優(yōu)化呢?
查看完整描述

2 回答

?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個贊

如果我了解得很好,您首先要逐行存儲文件,然后搜索“ * Element”的第一個匹配項(xiàng)和“ * Node”的最后一個匹配項(xiàng),最后存儲它們之間的內(nèi)容。


我看到的一種優(yōu)化是,您可以將文件的3次解析轉(zhuǎn)換為單個解析:


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) 


查看完整回答
反對 回復(fù) 2021-03-24
?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個贊

也許您可以按照正則表達(dá)式來思考:


如果我理解正確,您想在某個文件中的關(guān)鍵詞* Node和* Element之間獲取數(shù)據(jù),對嗎?


好吧,您可以嘗試類似:


import re


S = open('C:/Abaqus_JOBS' + JobDir + '/' + JobName + '-3_4.inp','r').read() 

Data =  re.finditer( "\*Nonde([.\n]*?)\*Element", S )

這應(yīng)該為您提供在標(biāo)簽“ * Node”和“ * Elements”之間找到的字符串列表。


我希望那是您想要做的。


查看完整回答
反對 回復(fù) 2021-03-24
  • 2 回答
  • 0 關(guān)注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號