簡體   English   中英

如何在 Abaqus/Python scipting 中從 CSV 文件中讀取數據

[英]How to read data from a CSV file in Abaqus/Python scipting

我正在嘗試使用腳本在 abaqus 中生成路徑,但不是手動將路徑作為坐標提供,我希望 abaqus 讀取 CSV 文件並基於該文件生成路徑,但出現以下錯誤: TypeError: expression;found 'file',需要一個可識別的類型填充字符串字典。 我知道腳本不識別輸入文件,但我不知道我應該如何修改它? 我試圖將我的 CSV 數據存儲到 Data.csv 中,當我想在腳本中讀取它時,我遇到了錯誤,錯誤指向以下行:

session.Path(name='point_list', type=POINT_LIST, expression=Data)

完整的代碼是:

'''
 from abaqus import *
 from abaqusConstants import * 
 import __main__

 #def Macro2():




import section
import regionToolset
import displayGroupMdbToolset as dgm
import part
import material
import assembly
import step
import interaction
import load
import mesh
import optimization
import job
import sketch
import visualization
import xyPlot
import displayGroupOdbToolset as dgo
import connectorBehavior
import numpy as np
import job
import math
import os
import shutil
import csv
import sys

pressure_range={170e-3,70e-3,20e-3,120e-3}
void_range={2,4,6,8,10,12,14,16,17}
Thickness_range={8,12,16,20}


i=0
for void in void_range:
 for Thickness in Thickness_range: 

    for Pressure_mag in pressure_range:
        pressure_name=Pressure_mag*1000
        pressure_name= int(pressure_name)
        void_name=int(void)
        Thickness_name=int(Thickness)
        i=i+1
        J_name='Job-'+str(i)+'Void_size'+str(void_name)+'mm'+'Thickness'+str(Thickness_name)+'mm'+str(pressure_name)+'Kpa_ogd'
       

        ParentDir='W:/Saeed M/Abaqus results from NESI/1D_Model_3/Ver5/Model_3_ver5'+'/'
        JobDir=J_name+'/'+J_name+'.odb'
        JobDirectory=ParentDir+JobDir
        CSV_name=J_name+'.csv'
        CSVreadpath='W:/Saeed M/Abaqus results from NESI/1D_Model_3/Ver5/Model_3_ver5'
        #file=open(CSVreadpath,"r")
        with open ('Data.csv','r') as csv_file:
            Data=csv.reader (csv_file)

        



        


        o1 = session.openOdb(
            name=JobDirectory)
        session.viewports['Viewport: 1'].setValues(displayedObject=o1)
        session.Path(name='point_list', type=POINT_LIST, expression=Data)

'''

正如@Anbu 提到的, csv.reader不會返回您期望的內容。 返回一個行閱讀器迭代器。 即使只有一行,也必須使用迭代器。

如果您只想閱讀第一行(正好有 3 個值),您可以執行以下操作:

with open('Data.csv', 'r') as csv_file:
    data = tuple(float(x) for x in next(csv.reader(csv_file)))

在此代碼段中, next返回csv.reader第一次迭代的值,Abaqus 需要轉換為Tuple[float]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM