【发布时间】:2014-06-02 22:42:41
【问题描述】:
我是编码新手,默认情况下是 Python 新手,所以请原谅我的无知...我正在努力。
我正在尝试编写一些代码(Python 2.7)来从多个 CSV 文件中获取特定的标头并将它们导出为单个文件。这是我的代码:
import csv, os
path = 'C:/Test/'
for fn in os.listdir(path):
if ".csv" in fn:
with open(fn, 'rb') as f:
with open('C:/Test/fun/output.csv', 'wb') as fou:
reader = csv.DictReader(f, delimiter=",", quotechar="|")
writer = csv.DictWriter(fou, delimiter=",", quotechar="|", fieldnames= ['sku', 'stock.qty', 'stock.is_in_stock'], extrasaction='ignore')
headers = {}
for n in writer.fieldnames:
headers[n] = n
writer.writerow(headers)
for row in reader:
print row
writer.writerow(row)
elif ".csv" not in fn:
break
阅读器实例的打印请求似乎打印了多个文件中的所有行。我正在测试 3 个具有已知行的文件。但是,DictWriter 输出文件仅读取最后一个文件中的行。对我来说,如何打印 row 和 writerow 并获得不同的结果是没有意义的。显然我的 DictWriter 写错了,但我看不到在哪里。对大多数人来说可能很明显,但我很困惑。
【问题讨论】:
-
您正在将文件打开到
write(如果存在则覆盖它),而不是append(添加到它的末尾)。 -
你写标题的方法过于冗长;
writer.writeheaders()会为你打个电话。
标签: python python-2.7 export-to-csv