使用for循环写入文件

时间:2019-12-12 12:04:44

标签: python dataframe text-files

我有一个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)

2 个答案:

答案 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('''...

最后两行(在打开文件以供再次读取时)看起来像您可能要将其移出循环。