今天回过头来看之前写的ROS小乌龟走图形小案例的代码时发现报错了:
将 raw_input()改为input()便可以了,因为这时使用的是python3,如果使用python2呢?
在python2中使用raw_input()是可以的,那么在Python2中使用input()呢?
直接报错:NameError: name 'squ' is not defined
'squ'没有定义?我查了一下才明白,原来在python2中raw_input()读取的是str类型,input()读取的int类型,而在python3中不存在raw_input()函数了,将此两个函数整合在一起了。
但是如果直接运行下列命令则是可以成功运行的
rosrun sundawn turtlerun.py squ
这是为什么呢?哈哈哈,这个和raw_input()与input()函数就没关系了,因为在我的代码中是这样写的:
if __name__ == '__main__':
graph_list = ['circle', 'squ', 'tri60', 'tri90', 'hourglass']
if len(sys.argv) > 1 and sys.argv[1] in graph_list: # 实现rosrun xx yy.py squ直接跑对应图形
name = sys.argv[1]
else:
name = input(
'Please input graph name(circle squ tri60 tri90 hourglass): ') # 没在命令输对图形名称时提示输入
try:
rospy.init_node('turtle_run', anonymous=True) # 对节点进行初始化,命名一个叫turtle_run的节点
tgraph = Turtlerun(name)
rospy.spin()
except rospy.ROSInterruptException:
pass
看来之前的代码确实需要时不时地回过头来看看啊,哈哈哈。