用于保存库存(书籍)的单独文件

时间:2018-02-10 16:16:49

标签: python json xml python-3.x

我有一个基本上是图书馆模拟的程序,你可以查阅书籍,编辑,删除等。

在我的计划中,我已将一些默认图书初始化为如下课程:

class BookData:
    def __init__(self):
        self.bookTitle = ''
        self.isbn = ''
        self.author = ''
        self.publisher = ''
        self.dateAdded = ''
        self.quantity = 0.0
        self.wholesale = 0.0
        self.retail = 0.0


def __str__(self):
    return 'Title: {} ISBN: {} Author: {} ' \
           'Publisher: {} Date Added: {} ' \
           'Quantity: {} Wholesale Value: {} ' \
           'Retail Value: {}'.format(self.bookTitle, self.isbn, self.author, self.publisher, self.dateAdded,
                                     self.quantity, self.wholesale, self.retail)

我在该计划中存储的一本书的示例:

book0.bookTitle, book0.isbn, book0.author, book0.publisher, book0.dateAdded, book0.quantity, book0.wholesale, book0.retail = "INTRODUCING PYTHON", "978-1-4493-5936-2", "Bill Lubanovic", "O'Reilly Media, Inc.", "11/24/2014", 25, 39.95, 50.00

然后将每本书都附加到列表中。

我想要做的事情是将所有图书存储到一个单独的文件中,以便可以在该文件中进行更新和编辑,但我还没有完全了解如何正确打开文件,读取每个部分(如title,isbn,author)然后在主程序中将它们转换为BookData对象并将它们放入列表中。

我考虑过使用逗号进行格式化的普通.txt文档。我不知道像JSON或XML这样的东西会让这更容易。

Psuedo代码示例:

open(file):
for word in file:
create book with title, author, isbn, etc in file
append to list of books

1 个答案:

答案 0 :(得分:1)

Python本身支持CSV(逗号分隔值)文件:Python documentation

一个例子是:

import csv
books = []
with open('file.csv', newline = '') as csvfile: 
    reader = csv.reader(csvfile)
    for row in reader:
        book = BookData()
        book.bookTitle = row[0]
        book.isbn = row[1] 

然而,话虽如此,改变你的构造函数(哈哈)连续进行,然后直接分配它可能更具建设性:

def __init__(self, row):
    self.bookTitle = row[0]