只有第一行输出被打印到我的文本fi

2024-04-26 18:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,我读入,然后我提取我需要的数据,并尝试将其发送到不同的新文本文件,但只有第一行进入新的文本文件。在

    import csv
    f = open('C:\\Users\\c\\Documents\\DCX.txt')
    next(f)
    csv_f=csv.reader(f, delimiter='\t')
    for row in csv_f:
        if 'DCX3520E' in row[0] and 'NULL' not in row[6]:
            with open("out.txt","w") as f1:
                dcx = row[0] + " " + row[6]
                aa = dcx[9:]
                print(aa)
                f1.writelines(aa)

Tags: csv数据inimporttxtopenusersdocuments
3条回答

我能看到的最大的问题是你在for循环中以写模式打开文件。每次以写入模式打开文件时,都会清空该文件并删除其中当前的所有内容。在

两个明确的解决方案如下:

  1. 使您的with行成为最外部的上下文
  2. 改为以append('a')模式打开。在

既然你是第一次来处理这个问题,我就故意避免发布完整的解决方案。我认为重要的是你要了解这里发生了什么,并试着自己去解决它。在

调用open("out.txt","w")以覆盖模式打开文件。在这里,您可能希望使用open("out.txt","a")来追加,但前提是每次都有充分的理由重新打开文件。除此之外,最好的做法是打开文件,多次写入,然后关闭

with open("out.txt","w") as out_file:
    for row in csv_f:
        if 'DCX3520E' in row[0] and 'NULL' not in row[6]:
            dcx = row[0] + " " + row[6]
            aa = dcx[9:]
            print(aa)
            out_file.writelines(aa)

不要在for循环中打开文件。每次都会覆盖文件。在

with open("out.txt","w") as f1:
    for row in csv_f:
        if 'DCX3520E' in row[0] and 'NULL' not in row[6]:
            dcx = row[0] + " " + row[6]
            ...

相关问题 更多 >