Python删除CSV行而不创建新的fi

2024-04-25 22:49:58 发布

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

我正在使用Python(Raspberry Pi)编辑CSV文件。我打开带有“append”标记的文件并添加一行。之后我检查一下文件的大小。如果文件太大,我想删除第一行数据(有一个标题行)。我看到的每个示例都跳过该行,并将所有其他行写入不同的CSV文件。我不想创建一个新的CSV文件…我只想删除当前文件中的第一行并保存它。在

import csv

def write_csv(datalist):   

    with open("CSVfile",'a') as f:
        writer = csv.writer(f, delimiter=',' ,quoting=csv.QUOTE_NONE)
        writer.writerow(datalist)

    while os.path.getsize("CSVfile") > 100000:
        ****DELETE FIRST ROW OF DATA FROM CSV FILE****

Tags: 文件csv数据csvfile标记编辑标题示例
1条回答
网友
1楼 · 发布于 2024-04-25 22:49:58

只是一种激发灵感的方法。在这种情况下,不需要创建新文件并重命名:

import csv
import os
import random

def ensure_csv_max_size(size):
    # Read all data into memory.
    with open('CSVfile', 'r') as f:
        reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
        csv_data = list(reader)

    # Remove first row, save, check repeatedly.
    for i in range(len(csv_data)):
        with open('CSVfile', 'w') as f:
            writer = csv.writer(f, delimiter=',', quoting=csv.QUOTE_NONE)
            writer.writerows(csv_data[i:])

        print(os.path.getsize('CSVfile'))
        if os.path.getsize('CSVfile') <= size:
            break

def write_csv(datalist):   

    with open("CSVfile",'a') as f:
        writer = csv.writer(f, delimiter=',' ,quoting=csv.QUOTE_NONE)
        writer.writerow(datalist)

    while os.path.getsize("CSVfile") > 100000:
        print("cut")
        ensure_csv_max_size(100000)

for i in range(1000):
    write_csv([random.randint(0, 100) for _ in range(10)])

相关问题 更多 >