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'] может вызвать ошибку.
Удачи!