我有一个for循环,该循环遍历Dataframe并打印一些行,也许是2或3。我编写了代码,但只将最后一行写到文本文件中。 这是我的代码:
data = read_csv()
#how to change this line
data = data.set_index('Seat No')
print('Here is your ticket...')
x=read_file()
for seat_no in x:
row=data.loc[int(seat_no)]
ticket = open('ticket.txt', 'w')
old_stdout = sys.stdout
sys.stdout = ticket
ticket.writelines('''
{}-{} {}
{}
'''.format(row.Source, '%4s' % row.Destination, '%2s' % row.Departure, '%2s' % seat_no))
sys.stdout = old_stdout
ticket.close()
printed_ticket = open('ticket.txt').read()
print(printed_ticket)
答案 0 :(得分:2)
我没有足够的声誉来发表评论,但是我认为,如果您将模式从'w'
更改为'a'
,它将在通过数据框时附加。
您要遍历数据帧并每次写入,因此它将覆盖现有数据。
答案 1 :(得分:1)
调用open('ticket.txt', 'w')
会导致文件被覆盖,因此,如果要附加文件,请改用'a'
。
此外,close
应该由with open...
自动执行,如下所示:
with open('ticket.txt', 'a') as ticket:
for seat_no in x:
ticket.writelines('''...
最后两行(在打开文件以供再次读取时)看起来像您可能要将其移出循环。