ROS Noetic下如何引用循环变量生成12个不同命名的bag文件
解决ROS Noetic循环生成带数字命名bag文件的问题
你的代码问题在于命令字符串里的x.bag是固定字面量,循环变量x没有被替换为实际数值,导致每次都会生成同名文件并覆盖。以下是几种可行的修正方案:
方案1:使用f-string(推荐,Python3.6+支持)
这是最直观简洁的字符串格式化方式,直接在字符串中嵌入变量:
import rospy import os # 确保目标目录存在,避免rosbag报错 bag_dir = '/home/mubashir/catkin_ws/src/germany1_trush/rosbag/' os.makedirs(bag_dir, exist_ok=True) for x in range(12): cmd = f'rosbag record -o {bag_dir}{x}.bag /web_cam --duration 5' os.system(cmd)
方案2:使用str.format()
兼容更早Python版本的格式化方式:
import rospy import os bag_dir = '/home/mubashir/catkin_ws/src/germany1_trush/rosbag/' os.makedirs(bag_dir, exist_ok=True) for x in range(12): cmd = 'rosbag record -o {}{}.bag /web_cam --duration 5'.format(bag_dir, x) os.system(cmd)
额外说明
- 如果需要生成的bag文件从1开始编号(而非默认从0开始),只需把
range(12)改为range(1, 13) os.makedirs(..., exist_ok=True)会自动创建目标目录,若目录已存在则不会报错,避免因目录缺失导致rosbag录制失败
内容的提问来源于stack exchange,提问作者Mubashir
相关产品推荐
相关产品推荐

