我正在使用 python 2.4 并尝试将 unix last 命令的值导出到 csv 文件。我不知道如何让它将每一行实际写入 csv 文件,我们将不胜感激!
import csv
def check(user,logfile,name):
logfile.write('********' + name + '*********\n')
g = subprocess.Popen(["last",user], stdout=subprocess.PIPE)
stdout, stderr = g.communicate()
reader = csv.DictReader(stdout.splitlines(),
delimiter=' ', skipinitialspace=True,
fieldnames=['id', 'pts', 'cpu',
'day', 'month', 'date',
'time', 'dash', 'off',
'loggedin', 'test1', 'test2'])
writer = csv.writer(open('dict.csv','wb'))
for row in reader:
writer.writerow(row)
最佳答案
您需要使用 csv.DictWriter()
代替(具有匹配的字段名),或者将字典行转换为序列:
writer.row([value for key, value in sorted(row.items())])
例如,将输出按键排序的值。
使用 DictWriter
可以像这样简单:
writer = csv.DictWriter(open('dict.csv','wb'), fieldnames=reader.fieldnames)
这将按照您的 DictReader()
类所期望的顺序写入完全相同的字段。
关于python将dictreader写入csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16794875/