我有一个基本上是图书馆模拟的程序,你可以查阅书籍,编辑,删除等。
在我的计划中,我已将一些默认图书初始化为如下课程:
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
答案 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]