![](/img/trans.png)
[英]Loop prints multiple lines (as intended) but only writes one line to the file
[英]For loop that prints every line to a file. Error
我試圖做一個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)
.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()
由於您要使用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
將自動關閉文件,並且csv模塊具有writerows
,其作用與名稱相同。
在python中,File的write方法僅接受一個參數,而您要傳遞兩個參數。
您都可以執行outfile.write(“%s”%item)
或者更好的方法是使用泡菜
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.