Я использую python 2.4 и пытаюсь экспортировать значение последней команды unix в файл csv. Я не могу понять, как заставить его фактически писать каждую строку в файл csv, любая помощь будет оценена!python write dictreader to csv file
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)
Вам также необходимо написать заголовок явно как: writer.writeheader() , иначе заголовок не будет записан. – Bolaka
@Bolaka: да, но не каждый usecase требует строки заголовка. OP использовал явный аргумент 'fieldnames' для' DictReader' здесь, что означает, что во входном файле нет строки заголовка. –
true, не каждый usecase требует строку заголовка. Его просто так: writer = csv.DictWriter (open ('dict.csv', 'wb'), fieldnames = reader.fieldnames) - создало впечатление, что он также напишет заголовок. Поэтому я думаю, что в ответе следует упомянуть, что если кто-то хочет написать заголовок, add-writer.writeheader() – Bolaka