我在这个问题上纠缠了好几个小时。你知道吗
我已经编写了一个Python代码来读取和转换文本文件中的数据,一切运行正常。你知道吗
simulink_robot_motor1=[]
with open('C:\\Users\...\sensor_data.txt',"r") as data_file:
rows=0
for line in data_file:
rows=rows+1
columns=len(line.split(","))
simulink_robot_motor=[[0 for x in range(columns)] for y in range(rows)]
i=0
with open('C:\\Users\...\sensor_data.txt',"r") as data_file:
for line in data_file:
current_line = line.split(",")
current_line = list(map(float, current_line))
simulink_robot_motor[i]=current_line
i=i+1
我对simulink_robot_motor
变量感兴趣,它有以下结果:
[[0.0, 3.6],
[1.6e-06, 3.6],
[4.57e-06, 3.6],
[7.67e-06, 3.6],
[1.09e-05, 3.6],
...
现在,我想在函数中使用这段代码。因此,如果调用函数,应该返回listsimulink_robot_motor
。你知道吗
def get_matlab_sensor_data():
simulink_robot_motor1=[]
with open('C:\\Users\...\sensor_data.txt',"r") as data_file:
rows=0
for line in data_file:
rows=rows+1
columns=len(line.split(","))
simulink_robot_motor=[[0 for x in range(columns)] for y in range(rows)]
i=0
with open('C:\\Users\...\sensor_data.txt',"r") as data_file:
for line in data_file:
current_line = line.split(",")
current_line = list(map(float, current_line))
simulink_robot_motor[i]=current_line
i=i+1
return (simulink_robot_motor)
但是如果我运行get_matlab_sensor_data()
,我会得到以下结果:
[[0, 3.6],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
...
我尝试了更小的数据集,也关闭了科学十进制风格。然而,它仍然不起作用。我的循环运行不正常吗?你知道吗
首先,在原始代码中,您将整个文件读取两次,这是不必要的。这里有一个简化:
当您试图将代码转换为函数时,出现了两个问题,一个是
simulink_robot_motor
变成了函数外不存在的局部变量。第二个是在第二个for line in data_file:
循环中有一个return
语句,这意味着它将在只读取一行之后返回。你知道吗下面修复了这两个问题,并展示了如何使用新函数:
您的return语句处于不正确的缩进级别,因此它在for循环中执行得太快,永远不会完成循环。你知道吗
另外,您可能不需要用语句缩进第二个语句:
相关问题 更多 >
编程相关推荐