将列表保存到fi

2024-10-01 17:25:23 发布

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

我有一个图书馆,我想在那里创建一本新书,然后将它添加到我的图书列表中。 我遇到的问题是在调用之间保存文件。在

我是这样读文件的:

def read_bookfile():

    try:
        booklibrary_file = open("a.txt")

        booklibrary_list = []
        booklist = booklibrary_file.readlines()
        for rad in booklist:
            linelist = rad.split("/")
            title = linelist[0]
            firstname = linelist[1]
            lastname = linelist[2]
            isbn = int(linelist[3])
            availability = linelist[4]
            borrowed = linelist[5]
            late = linelist[6]
            returnday = linelist[7]
            b = Book(title, firstname, lastname, isbn, availability, borrowed, late, returnday) 
            booklibrary_list.append(b)
        booklibrary_file.close()
        return booklibrary_list

现在我想知道如何保存到我的文件。在


Tags: 文件titlefirstnamelistfileisbnavailabilityrad
3条回答

Python是“包括电池”的,记得吗?在

考虑使用“csv”模块:

use csv

csv.reader(...)
csv.writer(...)

我认为这些有很多选项(比如你可以设置分隔符而不是逗号;你可以读入字典列表,等等)

Python Docs for CSV reader/writer

为了保存到文件,必须以Write Append模式打开它。在

library_file = open("a.txt", "a")
...
library_file.write("Some string\n")
...
library_file.close()

有关更多信息,请参阅Python关于Built-in Functions的文档。在

首先,假设这八个字段是唯一的字段,这里有一个更简单的阅读方法:

def read_bookfile(filename="a.txt"):
    with open(filename) as f:
        return [Book(*line.split('/')) for line in f]

现在,要保存:

^{pr2}$

假设Book模型只是在传递这些属性时将它们保存(作为字符串)。在

说明:

  • with语句打开文件,并确保在控件从语句中传出时文件被关闭,即使出现异常或类似的情况。在
  • 最好将文件名作为参数传入,因为它允许您在不更改函数的情况下使用不同的文件名;这将使用默认参数,这样您仍然可以用相同的方式调用它。在
  • [... for line in f]是一种列表理解,它与执行lst = []; for line in f: lst.append(...)类似,但编写和运行速度更快。在
  • 'w'模式下打开一个文件,可以对其进行写入。请注意,这将删除文件中已经存在的内容;您可以使用'a'或{}来避免这种情况,但这需要更多的工作来协调现有内容与您的图书列表。在
  • read_bookfile中的*将一个列表拆分,就像您将它们作为单独的参数传递给函数一样。在
  • '/'.join()获取字符串列表并使用斜杠将它们连接在一起:'/'.join(["a", "b", "c"])"a/b/c"。但是它需要字符串,这就是我为什么要str(isbn)(因为book.isbn是一个int)。在

相关问题 更多 >

    热门问题