将列表从Python保存到文本文件格式

1 投票
1 回答
808 浏览
提问于 2025-04-18 01:35

假设我有一个文本文件,

fantasy,12/03/2014
sci-fi,13/04/2014
history,03/04/2014

然后我用下面的代码把它转换成一个Python列表。

def load_list(filename):
    my_file = open(filename, "rU")
    my_list = []
    for line in my_file:
        a,b = line.rstrip("\n").split(",")
        my_list.append((as_datetime(b),a))
    my_file.close()
    return my_list

这个代码的输出结果是:
[(datetime.datetime(2014, 3, 12, 0, 0), 'fantasy'), (datetime.datetime(2014, 4, 3, 0,
0), 'history'), (datetime.datetime(2014, 4, 12, 0, 0), 'sci-fi')]。

我可以假设这个列表在使用过程中会被进一步修改,比如添加和删除元素。我的问题是,如何实现一个函数,把这个列表导出为一个文本文件,并且保持和原文件一样的格式呢?

1 个回答

1

你可以使用 csv 模块来读取和写入数据。

为了按照日期格式处理数据,可以使用 strptime()strftime() 这两个函数,它们来自 datetime 模块,具体可以查看 文档

下面是一个完整的例子:

import csv
from datetime import datetime

FORMAT = '%d/%m/%Y'

def load_list(filename):
    my_list = []
    with open(filename, "rU") as f:
        reader = csv.reader(f)
        for line in reader:
            my_list.append([line[0], datetime.strptime(line[1], FORMAT)])
    return my_list


def save_list(filename, my_list):
    with open(filename, "w") as f:
        writer = csv.writer(f)
        for item in my_list:
            writer.writerow([item[0], item[1].strftime(FORMAT)])


my_list = load_list('input.txt')
save_list('output.txt', my_list)

这个例子会从 input.txt 文件中读取数据,然后把这些数据写入到 output.txt 文件中。运行这个脚本后,output.txt 的内容和 input.txt 是一样的:

fantasy,12/03/2014
sci-fi,13/04/2014
history,03/04/2014

希望这对你有帮助。

撰写回答