[英]Saving and appending variables to txt file
我在一个列表变量中使用了几个变量,当工作完成后,我想将此变量保存到一个 txt 文件中以供进一步使用。
这段代码有效,只是它没有在 txt 文件中追加新行(尽管我使用了\\n
作为新行),但它只是增加了同一行上的变量。
ess[0].append(ess_e), ess[1].append(essv), ess[2].append(essp), ess[3].append(essq), ess[4].append(ess_s), ess[5].append(ess_d)
file = open("relais.txt", "w")
file.write(repr(ess) + "\n")
file.close()
程序的第一次运行很好,这是txt文件
[[datetime.datetime(2021, 7, 18, 11, 31, 35, 4978)], ['61'], ['mo'], ['145'], [datetime.datetime(2021, 7, 18, 11, 31, 42, 3653)], [datetime.timedelta(seconds=6, microseconds=998675)]]
但是第二次运行给了我这个,在 1 行
[[datetime.datetime(2021, 7, 18, 11, 31, 35, 4978), datetime.datetime(2021, 7, 18, 11, 33, 33, 920715)], ['61', '54'], ['mo', 'kj'], ['145', '10'], [datetime.datetime(2021, 7, 18, 11, 31, 42, 3653), datetime.datetime(2021, 7, 18, 11, 33, 42, 932126)], [datetime.timedelta(seconds=6, microseconds=998675), datetime.timedelta(seconds=9, microseconds=11411)]]
我希望结果是第 1 行的第一个结果和第 2 行的第二个结果,依此类推。
我如何告诉他把它写成一行而不是将变量字段合并在一起来得到这个?
[[datetime.datetime(2021, 7, 18, 11, 31, 35, 4978)], ['61'], ['mo'], ['145'], [datetime.datetime(2021, 7, 18, 11, 31, 42, 3653)], [datetime.timedelta(seconds=6, microseconds=998675)]]
[[datetime.datetime(2021, 7, 18, 11, 33, 33, 920715)], ['54'], ['kj'], ['10'], [datetime.datetime(2021, 7, 18, 11, 33, 42, 932126)], [datetime.timedelta(seconds=9, microseconds=11411)]]
添加\\n
不起作用的原因是因为数据不在行中,它是按字段分组的。 我使用列表理解来获取分组数据并将其转换为行。 然后你可以使用\\n".join(
来获取每一行并用换行符连接它,给出你预期的输出。
rows = [[group[n] for group in ess] for n in range(len(ess[0]))]
file = open("relais.txt", "w")
file.write("\n".join([repr(x) for x in rows]))
file.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.