Python-TypeError: data; найдена строка, ожидающая кортеж

Написанный код был

f = open('data_x.txt', 'r')
values=f.read() 
values=f.readline() 

а при попытке вызвать другой шаг в скрипте abaqus

mdb.models['Model-1'].SmoothStepAmplitude(data=('data_x'), name='Amp-x',    timeSpan=STEP)

выдает ошибку TypeError:data; найдена строка, ожидающая кортеж

2 ответа

Когда вы хотите передать данные SmoothStepAmplitudeВам нужно передать данные, которые вы прочитали из файла или получить каким-либо другим способом. Невозможно определить имя файла и заставить Abaqus прочитать его для вас.

Если вы посмотрите на документацию (Abaqus Scripting Reference, 3.10.1), вы увидите, что data должна быть последовательность пар поплавков.

Если вы определили данные вручную, это будет что-то вроде:

my_data = [(10, 1), (20, 2)]
mdb.models['Model-1'].SmoothStepAmplitude(data=my_data, name='Amp-x',    timeSpan=STEP)

Вы должны убедиться, что данные в каждом узле хранятся в виде списка или кортежа; вы можете распечатать свои данные, чтобы убедиться, что они в правильной форме.

Например, данные в myData.txt:

  • 1 0,01
  • 2 0,02
  • 3 0,03

Если вы хотите прочитать второй столбец этих данных, например:

      f = open(r"myData.txt", "r")
lines=f.readlines()

values=[]
for line in lines:
   values.append(line.split( ))  

# for j in range(len(values)):
    # print ('values:',j,values[j][1])

myData =[0]*len(lines)
for i in range(len(myData)):
    myData[i]=[(values[i][1])]

print('myData:',myData)

истинная форма [['0,01'], ['0,02'], ['0,03']]; но последовательность ['0.01', '0.02', '0.03'] может вызвать ошибку.

Удачи!

Другие вопросы по тегам