首页 > 解决方案 > 如何在最后一行之后将数据写入文件?

问题描述

下面我有一个片段,它将一些数据写入文件。请注意,列表的输入xml_files可能txt_files会不时更改,这只是一些可复制的测试数据

xml_files = ['text0.xml', 'text1.xml', 'text2.xml', 'text3.xml']
txt_files = ['text0.txt', 'text1.txt']

    today  = datetime.date.today().strftime('%Y-%m-%d')
    with open(log_location + '/' + today + '-logT2M_II.txt', 'a') as output:
        if output.tell() == 0: 
            output.write('Processed XML files: ')
        output.write('\t' + xml_files + '\n')
        if output.tell():
            output.write('Processed TXT files: ')
        output.write('\t' + xml_files + '\n')

我希望我的文件如下所示,所以我实际上想Processed TXT files在最后一个xml file. 现在我有 4 个 XML 文件,但这会不断变化,可能是 3 可能是 7 可能是 12。同样适用于 TXT 文件,TXT 文件的数量也可能发生变化。

Processed XML files:
      text0.xml
      text1.xml
      text2.xml
      text3.xml
Processed TXT files:
      text0.txt
      text1.txt

我当前的输出:

TypeError: can only concatenate list (not "str") to list
    

标签: pythonlistfilewrite

解决方案


问题是当你这样做

'/t' + xml_files # str() + list()

这没有任何意义。您需要遍历列表中的元素,并一一添加。

试试这个:

output.write('Processed XML files: \n')
for xml_file in  xml_files:
    output.write('\t' + xml_file + '\n')

output.write('Processed TXT files: \n')
for txt_file in  txt_files:
    output.write('\t' + txt_file + '\n')


推荐阅读