0

リスト内のすべての行をファイルに出力する for ループを作成しようとしていますが、このエラーが発生します。何か助けはありますか?ありがとう

def write_file(filename, rabbitlist, foxlist, finallist, averagefox, averagerabbit):

    # Opens File for Data Input
    outfile = open(str(filename) + ".csv", 'w')

    # Writes Data to Newly Created File
    finalresult = "\n".join(", ".join(map(str, l)) for l in finallist)
    outfile.write(str("Day, Foxes, Rabbits, , Average Foxes, Average Rabbits\n"))
    lastline = [0, foxlist[0], rabbitlist[0], " ", averagefox, averagerabbit]
    for item in lastline:
        outfile.write(" %s", item)
    outfile.close()

私が得るエラーは次のとおりです。Python: TypeError: takes exactly 1 argument (2 given)

4

3 に答える 3

3

.writeは 1 つのパラメーターのみを受け入れる ので、これを行うことができると思います

def write_file(filename, rabbitlist, foxlist, finallist, averagefox, averagerabbit):

    # Opens File for Data Input
    outfile = open(str(filename) + ".csv", 'w')

    # Writes Data to Newly Created File
    finalresult = "\n".join(", ".join(map(str, l)) for l in finallist)
    outfile.write(str("Day, Foxes, Rabbits, , Average Foxes, Average Rabbits\n"))
    lastline = [0, foxlist[0], rabbitlist[0], " ", averagefox, averagerabbit]
    for item in lastline:
        outfile.write(" %s" % item)
    outfile.close()
于 2013-06-19T04:06:16.337 に答える
1

csvを作成しているので、csvモジュールを使用しないでください。メソッドは次のようになります。

import csv

def write_file(filename,
               rabbitlist,
               foxlist,
               finallist,
               averagefox,
               averagerabbit):
    header_row = ['Day','Foxes','Rabbits',' ','Average Foxes','Average Rabbits']
    with open(filename,'w') as f:
        writer = csv.writer(f, delimiter=',')
        writer.writerow(header_row)
        writer.writerows(finallist)
        writer.writerow([0,
                         foxlist[0],
                         rabbitlist[0],
                         " ",
                         averagefox,
                         averagerabbit])

with_statementファイルを自動的に閉じ、writerows名前が示唆することを行う csv モジュールがあります。

于 2013-06-19T04:25:46.450 に答える