【发布时间】:2014-09-29 07:20:11
【问题描述】:
我正在编写一个 Python 脚本,该脚本应该合并一些 CSV 文件的一些列(很多,大约 200 个文件)。 所有文件如下所示:
Timestamp; ...; ...; ...; Value; ...
date1;...;...;...; FirstValue;...
date2;...;...;...; SecondValue;...
等等。
我想从第一个文件中提取时间戳和列值。从其他文件中,我只需要列值。
我现在的脚本是:
#!/usr/bin/python
import csv
import os, sys
# Open a file
path = "Z:/myfolder"
dirs = os.listdir( path )
#Conto il numero di file nella cartella
print len(dirs)
#Assegno il nome del primo file
file = dirs[0]
#Apro il primo file per la lettura di timestamp e primo valore (Value)
primofile = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
timestamp, firstValue = [], []
#Per ogni riga del primofile
for row in primofile:
#Copio timestamp
timestamp.append(row[2])
#e Value
firstValue.append(row[15])
with open("provacript.csv", 'wb') as f:
writer = csv.writer(f, delimiter=';')
i = 0
while i < len(timestamp):
writer.writerow([timestamp[i]] + [firstValue[i]])
i = i+1
所以在“provascript.csv”中,我有时间戳和第一列,其中包含我在第一个文件中的值。下一步是逐个打开“dirs”列表中的文件,读取“Values”列(第15列),将此列保存在数组中并写入“provascript.csv”。
我的代码是:
for file in dirs:
data = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
column = []
for row in data:
column.append(row[15])
在数组“列”中我应该有值。我必须在“provascript.csv”的新列中添加这些值,然后继续对所有文件做同样的事情。我该怎么做?
我想要类似的东西
TimestampFromFirstFile;ValueFromFirstFile;ValueFromSecondFile;ValueFromThirdFile;...
date1;value;value,value;...
date2;value;value;value;...
date3;value;value;value;...
到目前为止一切顺利。我修复了它(谢谢),但我不想在第一行读取和写入值,我想写下名称的一部分。而不是 Timestamp;Value;Value;Value 我更喜欢 Timestamp;Temperature1;Temperature2;Presence1;Presence2。
我该怎么做?
【问题讨论】:
-
向我们展示所需输出的样本。
-
您能否提供输入作为最小示例(如 3 行和 3 列)和相应的输出(如果
...不存在,则不显示,如果value是实际上是一个int,例如写5。)
标签: python arrays file python-2.7 csv