程序这样写会不会很费硬盘。。。 ROS Python CSV 文件操作机器人

发布时间:2024年01月04日

如何帮助硬盘尽快报废。。。

        while not rospy.is_shutdown():
            f = open('/home/xmlot/robot_0608_222_ws/src/turn_on_wheeltec_robot/scripts/task.csv','r')
            for goal in f:
                coordinates = goal.split(",")
                simple_move(float(coordinates[0]),float(coordinates[1]),float(coordinates[2]),float(coordinates[3]))
                talker(coordinates)
                rospy.loginfo("goal reached")
                rospy.sleep(5)
            f.close()
            rospy.sleep(1)

解决方案1 先读取到内存里

        f = open('/home/xmlot/robot_0608_222_ws/src/turn_on_wheeltec_robot/scripts/task.csv','r')
        while not rospy.is_shutdown():
            fr = list(f.read().split("\n"))
            print(fr)
            print(type(fr))
            for goal in fr:
                print(goal)
                coordinates = goal.split(",")
                print(coordinates)
                simple_move(float(coordinates[0]),float(coordinates[1]),float(coordinates[2]),float(coordinates[3]))
                talker(coordinates)
                rospy.loginfo("goal reached")
                rospy.sleep(5)
        f.close()  
        rospy.sleep(1)

但是上面的写法会报错

Traceback (most recent call last):
  File "/home/xmlot/robot_0608_222_ws/src/turn_on_wheeltec_robot/scripts/task_run_mulpose_loop.py", line 79, in <module>
    simple_move(float(coordinates[0]),float(coordinates[1]),float(coordinates[2]),float(coordinates[3]))
ValueError: could not convert string to float: 
/scripts$ rosrun turn_on_wheeltec_robot task_run_mulpose_loop.py ^Cts$ ^C

改进,试一试readlines()

        f = open('/home/xmlot/robot_0608_222_ws/src/turn_on_wheeltec_robot/scripts/task.csv','r')
        while not rospy.is_shutdown():
            # fr = list(f.read().split("\n"))
            fr = f.readlines()
            print(fr)
            print(type(fr))
            for goal in fr:
                print(goal)
                coordinates = goal.split(",")
                print(coordinates)
                simple_move(float(coordinates[0]),float(coordinates[1]),float(coordinates[2]),float(coordinates[3]))
                talker(coordinates)
                rospy.loginfo("goal reached")
                rospy.sleep(5)
        f.close()  
        rospy.sleep(1)

?其实还是有问题,正确的做法是每次重新初始化函数的指针哈哈哈。。。f.seek(0)

        f = open('/home/xmlot/robot_0608_222_ws/src/turn_on_wheeltec_robot/scripts/task.csv','r')
        while not rospy.is_shutdown():
            f.seek(0)
            for goal in f:
                print(goal)
                coordinates = goal.split(",")
                print(coordinates)
                simple_move(float(coordinates[0]),float(coordinates[1]),float(coordinates[2]),float(coordinates[3]))
                talker(coordinates)
                rospy.loginfo("goal reached")
                rospy.sleep(5)
        f.close()  
        rospy.sleep(1)

?

文章来源:https://blog.csdn.net/yiyamala/article/details/135334869
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。