Python 为什么';t DictWriter.writer是否向csv文件写入任何内容?

Python 为什么';t DictWriter.writer是否向csv文件写入任何内容?,python,csv,Python,Csv,我想将一些数据写入csv文件。但除了标题外,什么也没写,标题是单词和数字。我的代码怎么了 这是我的密码 import os import csv csvFile = open('Trail.csv','w+') fieldname = ['words', 'number'] trialDict = {'apple':1, 'banana':4, 'cat':6} writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasactio

我想将一些数据写入csv文件。但除了标题外,什么也没写,标题是单词和数字。我的代码怎么了

这是我的密码

import os
import csv

csvFile = open('Trail.csv','w+')
fieldname = ['words', 'number']
trialDict = {'apple':1, 'banana':4, 'cat':6}
writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasaction='ignore')
writer.writeheader()
writer.writerow(trialDict)
csvFile.close()
我想要你的意思,我修改我的代码。但仍然存在一个问题

import os
import csv

csvFile = open('Trail.csv','w+')
fieldname = ['words', 'number']
trialDict = {'words':'apple', 'number':5, 'words':'banana','number':6, 'words':'cat', 'number':5}
writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasaction='ignore') writer.writeheader()
writer.writerow(trialDict)
csvFile.close()
输出变为:

word numbers
cat   5
如何将所有内容写入文件?我尝试了
writerows
函数,但它返回了错误:

str对象没有属性get()

字段名是标题,您应该在dict中包含与标题对应的键,如果这是您的要求,则此代码应适用于:

import os 
import csv

csvFile = open('Trail.csv','w+')
fieldname = ['apple', 'banana', 'cat']
trialDict = {'apple':1, 'banana':4, 'cat':6}
writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasaction='ignore')
writer.writeheader()
writer.writerow(trialDict)

csvFile.close()

这里真正的问题是,您正在使用TrialDict覆盖密钥,而它只使用
单词
数字
的最后两个实例

>>> trialDict = {'words':'apple', 'number':5, 'words':'banana','number':6, 'words':'cat', 'number':5}
>>> trialDict
{'words': 'cat', 'number': 5}
您要做的是创建一个按单词计数的字典,只需编写键、值对:

fieldnames = ['words', 'number']
trialDict = {'apple': 5, 'banana': 6, 'cat': 5}

with open("Trial.csv", "w+") as f:
    f.write(','.join(fieldnames) + '\n')
    for word, number in trialDict.items():
        f.write(word + ',' + str(number) + '\n')

您不需要使用
DictWriter
。标准的
编写器
可以工作。按照以下步骤打开文件时,还要注意
newline='
参数:

输出:

words,number
apple,1
banana,4
cat,6
要使用
DictWriter
,您需要一个字典列表,其中包含作为标题值的键:

import csv

fieldname = ['words', 'number']
trialList = [{'words':'apple','number':1},
             {'words':'banana','number':4},
             {'words':'cat','number':6}]

with open('Trail.csv','w',newline='') as csvFile:
    writer = csv.DictWriter(csvFile,fieldnames=fieldname)
    writer.writeheader()
    writer.writerows(trialList)

你期望它做什么?
trialDict
中没有一个键是
'words'
'number'
。您阅读了吗?我想OP希望标题/字段名是
word
number
。这个解决方案不能解决这个问题。
import csv

fieldname = ['words', 'number']
trialList = [{'words':'apple','number':1},
             {'words':'banana','number':4},
             {'words':'cat','number':6}]

with open('Trail.csv','w',newline='') as csvFile:
    writer = csv.DictWriter(csvFile,fieldnames=fieldname)
    writer.writeheader()
    writer.writerows(trialList)