2016-09-19 22 views
2

我从看起来像这样激光雷达传感器数据的一个csv文件,但有更bagillion行:如何读取一个大的csv文件的内容,并用Python中的操作符将它们​​写入另一个文件?

scan_0,scan_1,scan_2 
timestamp_0,timestamp_1,timestamp_2 
7900200,7900225,7900250 
logTime_0,logTime_1,logTime_2 
27:46.8,27:46.8,27:46.8 
distance_0,distance_0,distance_0 
132,141,139 
136,141,155 
139,141,155 
138,143,155 
138,143,142 
139,143,136 
138,143,136 

这是从一个平面的传感器数据。因此,Scan_0是时间戳特定扫描的列表或“放射状”坐标。

我的计划是:

  1. 阅读CSV文件导入列表
  2. 每个扫描创建单独的数组中的(列)
  3. 打开扫描阵列中的每个元素到像一个XYZ格式下面的例子。

    scan_0 -----> scan_0 
    timestamp_0-> timestamp_0 
    7900200-----> 7900200 
    logTime_0---> logTime_0 
    27:46.8-----> 27:46.8 
    distance_0--> distance_0 
    132---------> [132*cos(1),132*sin(1),7900200] 
    136---------> [136*cos(2),136*sin(2),7900200] 
    139---------> [139*cos(3),139*sin(3),7900200] 
    138--------->   .   . 
    138--------->   .   . 
    139--------->   .   . 
    138---------> [138*cos(7),139*sin(7),7900200] 
    
  4. 每行写”

  5. 与一个坐标,最终使用的轨迹,而不是时间戳用于z从另一个csv文件的坐标XYZ坐标的数组到一个新的CSV文件。

我告诉你所有这些,所以你对我的动机有一些背景。要开始这个小项目,我已经决定尝试将csv文件读入列表中,并将每行输出到另一个csv文件中......从小开始吧?

这里是我到目前为止有:

import csv 

with open("2016_09_16_14_29_09_953.csv", 'r') as f: 
    with open("out.csv", "a") as f1: 
     x = csv.reader(f) 
     my_list = list(x) 
     thedatawriter = csv.writer(f1) 
     for row in my_list: 
      thedatawriter.write(row) 

创建一个空的CSV文件。我在这里做错了什么?我感觉像一只蚂蚁攀登珠穆朗玛峰。任何帮助,建议和指导,非常感谢。

回答

1

当运行代码,我得到以下错误:

AttributeError: '_csv.writer' object has no attribute 'write' 

你确定你没有得到相同类型的错误?因为基于the documentation of csv,该方法似乎是writerow而不是write

因此,像罗布·戴维斯似乎已经回答了,thedatawriter.writerow(row)

+0

哇,这是它。谢谢!我永远不会承认我在这上面花了多少时间。 – FLAV10

+0

没问题,只需将答案标记为正确! –

1

我不知道为什么这不会炸毁你。 csv.writer对象没有写入功能。请改用datawriter.writerow(row)。