前言
一、文件基本操作
open与close
打开文件:使用 open() 函数,该函数会返回一个文件对象
对已打开文件做读/写操作:借助对应的函数实现
关闭文件:完成对文件的操作之后,使用 close() 函数关闭文件
必用的open()函数用于打开文件
f = open('文件名','r',encoding='utf-8')
有open也肯定要有close吧,close()函数是来关闭文件的
f = open('文件名', 'r', encoding='utf-8')
da = f.read()
data = eval(da)
f.close()
还有一种可以自动关闭的
with open('数据储存.txt', 'a+', encoding='utf-8') as f:
with……as
读数据 read
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中的所有数据
#读:read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
f = open("test.txt","r")
content = f.read(5) #一次读五个字符
print(content)
print('-'*30)
content = f.read()
print(content)
f.close()
读数据readlines与readline
就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性的读取,并且返回的是一个列表,其中每一行的数据为一个元素
readline是读取一行的数据
二、面向对象
1.类的创建与继承
先创建一个book类
(1)设置getter和setter方法用于获取和设置类中的name变量的值;
(2)equals方法,当且仅当书名(name)和出版社(publisher)均相等时,即为同一本书。
(3)toString方法,返回书名(name)和出版社(publisher)的信息,样式如下:
“书名:Java程序设计,出版社:清华大学出版社
class Book:
def __init__(self, name, publisher):
self.__name = name
self.__publisher = publisher
def getter(self):
return self.__name
def setter(self, name):
self.__name = name
def equals(self, other):
'''
判断两者是否相等
'''
# 只有当and 两端的都为True的时候 返回True
return self.__name == other.__name and self.__publisher == other.__publisher
def toString(self):
return f'书名:{self.__name},出版社:{self.__publisher}'
2、馆藏图书类(CollectionBook),继承自Book类
成员变量:
图书编号(bNo)str类型
所在书库(stacks)str类型
class CollectionBook(Book):
def __init__(self, name, publisher, bNo, stacks, isBorrow):
'''
:param name: 书名
:param publisher: 出版社
:param bNo: 编号
:param stacks: 类别
:param isBorrow: 借阅状态
'''
super().__init__(name, publisher)
self.__bNo = bNo
self.__stacks = stacks
self.__isBorrow = isBorrow
2.重点操作
是否借阅(isBorrow)boolean类型 图书状态为已借阅时,值为true。
(1)实现borrow方法 借阅图书
如果图书状态为已借阅,则输出“对不起,该图书已借阅”,否则,修改该图书状态为已借阅,输出“借阅成功”
(2)实现revert方法 归还图书
如果图书状态是可借阅状态,输出“该图书已归还”, 否则,修改图书借阅状态为未借阅,并输出“还书成功”
def borrow(self):
# 根据借阅状判断进行不同的操作
if self.__isBorrow:
print("对不起,该图书已借阅")
else:
print('借阅成功')
self.__isBorrow = True
def revert(self):
# 根据借阅状判断进行不同的操作
if self.__isBorrow:
print("还书成功")
self.__isBorrow = False
else:
print('该图书已归还')
用main方法来验证,通过键盘输入整数,输入0,则对book1进行借阅,输入1,则对book1进行归还操作
if __name__ == '__main__':
book1 = CollectionBook(name="国超自传", publisher="清华出版社", bNo='1000', stacks='名人自传', isBorrow=False)
book2 = CollectionBook(name="国超自传", publisher="清华出版社", bNo='1000', stacks='名人自传', isBorrow=False)
print(book1.toString())
print(book1.toString())
print(book1.equals(book2))
# 输入0表示借阅,输入1表示还书
n = input()
if n == '0':
book2.borrow()
elif n == '1':
book2.revert()
输入0表示借阅操作,输入1表示归还操作
总结
经过这一次的考核,对面向对象有了更加深刻的理解,这一周也学到了好多知识,我会好好复习之前的知识,多加练习,继续努力