如何使用for循环遍历一系列值,并将每次迭代保存为csv文件



我正在尝试使用Cyberbotics的Webots来驱动一个带有手指夹的机械臂。我想让forcelist中的力,在for循环中连续测试。例如,我希望i的第一个值是1000,然后是1250,然后是1500,直到5000。当我运行代码时,它似乎只执行for循环中的第一个力值,然后使用相同的值重复for循环。我不知道为什么会这样。我还试图记录每个测试(每个力值迭代)的数据,我试图将每个测试导出为单独的csv文件,但是我的代码将所有数据放在相同的第一个excel文件中?
如果有人能帮助我,我将非常感激。

forcelist = range(1000, 5000, 250)
for i in forcelist:
with open(f"TwoFingerGripper_force={i}_mass={MASS}_width={BOX_WIDTH}.csv", 'w', encoding='UTF8') as f:
writer = csv.writer(f)
writer.writerow(["dsc_value","com_x","com_y","com_z","speed_lin_x","speed_lin_y","speed_lin_z",                                   "speed_rot_0", "speed_rot_1", "speed_rot_2", "gripper_force", "power_input", "battery"])


# Main loop:
while robot.step(timestep) != -1:
if timer < 60:
finger_motor.setTorque(0.5)

elif timer < 120:
finger_motor.setForce(i)
if arm_pos <= 1.6:
arm_pos += 0.04

elif timer < 180:
finger_motor.setForce(i)
if wst_pos <= 3.14159265:
wst_pos += 0.1

elif timer < 240:
finger_motor.setForce(i)
if wst_pos > 0:
wst_pos -= 0.1

elif timer < 300:
finger_motor.setForce(i)
if arm_pos > 0:
arm_pos -= 0.04

elif timer < 360:
if fgr_pos < 0:
fgr_pos += 0.02

elif timer > 380:
timer == 0 

timer += 1  
ledCtrl()    
arm_motor.setPosition(arm_pos)
wrist_motor.setPosition(wst_pos)
finger_motor.setPosition(-fgr_pos)

有没有人可以帮我一下,我已经被这个问题困了很长时间了。

forcelist = range(1000, 5000, 250)
for i in forcelist:
with open(f"TwoFingerGripper_force={i}_mass={MASS}_width={BOX_WIDTH}.csv", 'w', encoding='UTF8') as f:
writer = csv.writer(f)
writer.writerow(["dsc_value", "com_x", "com_y", "com_z", "speed_lin_x", "speed_lin_y", "speed_lin_z", "speed_rot_0", "speed_rot_1", "speed_rot_2", "gripper_force", "power_input", "battery"])
while robot.step(timestep) != -1:
if timer < 60:
finger_motor.setTorque(0.5)
elif timer < 120:
finger_motor.setForce(i)
if arm_pos <= 1.6:
arm_pos += 0.04
elif timer < 180:
finger_motor.setForce(i)
if wst_pos <= 3.14159265:
wst_pos += 0.1
elif timer < 240:
finger_motor.setForce(i)
if wst_pos > 0:
wst_pos -= 0.1
elif timer < 300:
finger_motor.setForce(i)
if arm_pos > 0:
arm_pos -= 0.04
elif timer < 360:
if fgr_pos < 0:
fgr_pos += 0.02
elif timer > 380:
timer == 0
timer += 1
ledCtrl()
arm_motor.setPosition(arm_pos)
wrist_motor.setPosition(wst_pos)
finger_motor.setPosition(-fgr_pos)
data_row = [dsc_value, com_x, com_y, com_z, speed_lin_x, speed_lin_y, speed_lin_z, speed_rot_0, speed_rot_1, speed_rot_2, gripper_force, power_input, battery]
writer.writerow(data_row)