【问题标题】:how to save data as csv file [duplicate]如何将数据保存为csv文件[重复]
【发布时间】:2021-04-03 09:24:19
【问题描述】:

我正在尝试将 imu 和 gnss 数据从 carla 模拟器保存到 csv 文件,我可以从终端读取数据但不能将它们保存为 csv 文件,它会给出错误 AttributeError: 'list' object has no attribute 'to_csv ',然后我创建了一个空列表尝试保存然后转换为 csv 文件

actor_list = []
try:
    
    # Add GNSS sensor to ego vehicle. 
    # --------------

    gnss_bp = world.get_blueprint_library().find('sensor.other.gnss')
    gnss_location = carla.Location(0,0,0)
    gnss_rotation = carla.Rotation(0,0,0)
    gnss_transform = carla.Transform(gnss_location,gnss_rotation)   
    gnss_bp.set_attribute("sensor_tick",str(3.0))
    ego_gnss = world.spawn_actor(gnss_bp,gnss_transform,attach_to=ego_vehicle, attachment_type=carla.AttachmentType.Rigid)
    def gnss_callback(gnss):
        print("GNSS measure:\n"+str(gnss)+'\n')
    ego_gnss.listen(lambda gnss: gnss_callback(gnss))
    actor_list.append(ego_gnss)
# --------------
# Add IMU sensor to ego vehicle. 
# --------------

    imu_bp = world.get_blueprint_library().find('sensor.other.imu')
    imu_location = carla.Location(0,0,0)
    imu_rotation = carla.Rotation(0,0,0)
    imu_transform = carla.Transform(imu_location,imu_rotation)
    imu_bp.set_attribute("sensor_tick",str(3.0))
    ego_imu = world.spawn_actor(imu_bp,imu_transform,attach_to=ego_vehicle, attachment_type=carla.AttachmentType.Rigid)
    def imu_callback(imu):
        print("IMU measure:\n"+str(imu)+'\n')
    ego_imu.listen(lambda imu: imu_callback(imu))


    actor_list.append(ego_imu)
    #add this sensor to our actors.

    time.sleep(10)
    # sleep for 5 seconds, then finish:
    data =[]
    low_data = {        "accelX":ego_imu.accelerometer[0],
                        "accelY":ego_imu.accelerometer[1],
                        "accelZ":ego_imu.accelerometer[2],
                        "gyroX":ego_imu.gyroscope[0], 
                        "gyroY":ego_imu.gyroscope[1], 
                        "gyroZ":ego_imu.gyroscope[2],
                        "Lat": ego.gnss[0],
                        "Lon" : ego.gnss[1]}
    data = data.append(low_data, ignore_index=True)
    print(low_data)

finally:
    data.to_csv("out_{}.csv".format(args.name))
    print("CSV SAVED FOR DRIVER named {}".format(args.name))




【问题讨论】:

    标签: python csv file


    【解决方案1】:

    使用找到的 csv 模块 https://www.geeksforgeeks.org/python-save-list-to-csv/

    一旦你形成了你想要的列表:

    
        fields = ['Name', 'Branch', 'Year', 'CGPA'] 
        
        # data rows of csv file 
        rows = [ ['Nikhil', 'COE', '2', '9.0'], 
             ['Sanchit', 'COE', '2', '9.1'], 
             ['Aditya', 'IT', '2', '9.3'], 
             ['Sagar', 'SE', '1', '9.5'], 
             ['Prateek', 'MCE', '3', '7.8'], 
             ['Sahil', 'EP', '2', '9.1']] 
        with open('file_name.csv', 'w') as f:
          
           # using csv.writer method from CSV package
           write = csv.writer(f)
          
           write.writerow(fields)
           write.writerows(rows)
    

    实际上,您是在创建文件,然后手动将其与列表中的每个项目一起写出。

    另一种方法是使用保存在字典中的信息:

        
        def to_csv(self):
                '''
                Save data to csv file
                '''
        
                keys = self.data[0].keys()
                with open("sample.csv", "w", newline='')  as csv_output:
                    dict_writer = csv.DictWriter(csv_output, keys)
                    dict_writer.writeheader()
                    dict_writer.writerows(self.data)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 2017-03-15
      • 2022-11-04
      • 1970-01-01
      • 2017-06-18
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多