3

私はpython 2.4を使用しており、unixの最後のコマンドの値を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)
4

1 に答える 1

5

csv.DictWriter()代わりに (一致するフィールド名で) を使用するか、辞書の行をシーケンスに変換する必要があります。

writer.row([value for key, value in sorted(row.items())])

たとえば、キーでソートされた値を出力します。

a の使用は次のDictWriterように簡単です。

writer = csv.DictWriter(open('dict.csv','wb'), fieldnames=reader.fieldnames)

DictReader()クラスが期待しているものとまったく同じフィールドを同じ順序で書き込みます。

于 2013-05-28T14:41:52.807 に答える