如何在python中更新改变文本文件中的值

问题描述 投票:0回答:1

如何使用用户输入更改文本文件的值项?例如,我将更新文本文件中RECOVERED(COVID情况)的值。我不知道从哪里开始。

以下是我的文本文件的内容

COUNTRY,CONFIRMED,ACTIVE,RECOVERED,SUSPECT,PROBABLE,DECEASED
COUNTRYA,4,2,2,2,0,0
COUNTRYB,2,0,2,0,0,0
COUNTRYC,2,0,0,3,0,2
COUNTRYD,2,1,1,3,0,0
python replace text-files key-value
1个回答
0
投票

像你在帖子中演示的那样对CSV文件进行 "原地 "更新是不可能的。一般来说,你只能覆盖文件。

但是 纪念 它非常容易修改表格数据。我建议使用Pandas库的DataFrame数据结构。

例如,如果你想加载文件,将D国的确认病例数改为10,然后重新保存文件,你的代码就会像这样。

import pandas as pd

data = pd.read_csv('data.csv', index_col='COUNTRY')
data.at['COUNTRYD', 'CONFIRMED'] = 10
data.to_csv('data.csv')

如果你想有一个更强大的应用程序,例如,处理并发线程更新或非常频繁的更新,你应该使用不同的文件格式。我个人使用SQLite数据库来实现这个目的,并使用了 sqlite3 标准库中的包。


编辑-

如果你不能使用Pandas,你可以通过使用 csv包 的标准库中。我建议将数据存储在dict的dict中。这里有一个例子。

import csv

def read_data(filename):
    data = {}
    with open('data.csv') as fp:
        reader = csv.DictReader(fp)  # auto-detects field names
        for row in reader:
            key = row['COUNTRY']
            value = {k: v for k, v in row.items() if k != 'COUNTRY'}
            data[key] = value
    return data

def write_data(data, filename, fieldnames):
    with open('data.csv', 'w') as fp:
        writer = csv.DictWriter(fp, fieldnames=fieldnames)
        for key, value in data.items():
            row = {'COUNTRY': key, **value}
            row[''] = key
            writer.writerow(row)

data = read_data('data.csv')
data['COUNTRYD']['CONFIRMED'] = 10
fieldnames = list(next(data.values()).keys())  # get the field names from the first element in the dataset
write_data(data, 'data.csv', fieldnames)

请仔细阅读这个例子. 一如既往。不要复制和粘贴你不完全理解的代码。.

© www.soinside.com 2019 - 2024. All rights reserved.