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

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

        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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值