Skip to main content
 首页 » 编程设计

Python逐行扫描文件并删除同一循环中的最后一行

2025年05月04日14虾米姐

我正在尝试扫描一个 csv 文件并逐行进行调整。最后,我想删除最后一行。如何删除同一扫描循环中的最后一行?

我下面的代码从原始文件读取,进行调整,最后写入一个新文件。

import csv 
 
raw_data = csv.reader(open("original_data.csv", "r"), delimiter=",") 
output_data = csv.writer(open("final_data.csv", "w"), delimiter=",") 
lastline = # integer index of last line 
 
for i, row in enumerate(raw_data): 
    if i == 10: 
        # some operations 
        output_data.writerow(row) 
    elif i > 10 and i < lastline: 
        # some operations 
        output_data.writerow(row) 
    elif i == lastline: 
        output_data.writerow([]) 
    else: 
        continue 

请您参考如下方法:

你可以创建一个生成器来生成除最后一个元素之外的所有元素:

def remove_last_element(iterable): 
    iterator = iter(iterable) 
    try: 
        prev = next(iterator) 
        while True: 
            cur = next(iterator) 
            yield prev 
            prev = cur 
    except StopIteration: 
        return 

然后你只需将 raw_data 包裹在里面:

for i, row in enumerate(remove_last_element(raw_data)): 
    # your code 

最后一行将被自动忽略。

这种方法的好处是只读取文件一次。