# -*- coding: utf-8 -*-
# 写入数据的工具类
class FileManager(object):
# 保存文件的名称
filename = 'student.txt'
# 写一个写入数据的接口
@classmethod
def write(cls, content, split='\n'):
'''
:param content: 要写入的数据
:param split: 每条数据之间的分割符
:return:
'''
# 判断传入的参数是否字符串类型,如果是,写入 如果不是抛出异常
if isinstance(content,str):
# 1.打开文件
f = open(cls.filename, 'a')
# 2.写入数据
f.write(content)
f.write(split)
# 3.关闭文件
f.close()
else:
raise TypeError('content must be a str!')
# 写入多行数据
@classmethod
def writelines(cls,str_list,split='\n'):
# 判断某个对象是否是某个类型,如果是返回True,如果不是返回False
rs = isinstance(str_list,list)
# 如果为True
if rs:
# for循环遍历列表,取出每一数据,判断数据类型是否为字符串
for content in str_list:
# 如果不是字符串类型
if isinstance(content,str) == False:
# 抛出异常
raise TypeError('str_list must be a list of "str",ex:["str1","str2".....] ')
# 如果没有抛出异常,就可以写入数据了
# 1.打开文件
f = open(cls.filename, 'a')
# 2.写入数据 str1\nstr2\nstr3.....
string = split.join(str_list)
f.write(string)
# 3.关闭文件
f.close()
else:
# 如果传入的不是列表,抛出异常
raise TypeError('str_list must be a list of "str",ex:["str1","str2".....] ')
# 日期格式化工具类,用类执行一个函数,返回一个对象,对象分别有year\month\day
'''
2018-2-1 \ 2018.2.1 \ 2018 2 1
date.year = 2018
date.month = 2
date.day = 1
'''
class DateTool(object):
# 初始化函数
def __init__(self, year=1970, month=1, day=1):
self.year = year
self.month = month
self.day = day
#类函数,传递进来一个日期,返回个该类的对象
@classmethod
def get_date(cls, date):
# 判断date是否为str类型
if not isinstance(date, str):
# 不是str类型,直接触发异常
raise TypeError('date must be a str !')
# 转换
# 判断是-还是.还是空格
if '-' in date:
#
list1 = date.split('-')
# map() 让列表中每一个元素都去执行一次某个函数,返回一个结果列表
numbers = list(map(int, list1))
# year,month,day = [2018,2,1] 分别将2018赋值year 2赋值给month 1赋值给day
year, month, day = numbers
elif '.' in date:
year, month, day = list(map(int, date.split('.')))
elif ' ' in date:
year, month, day = list(map(int, date.split(' ')))
# 创建对象
# obj = DateTool(year,month,day)
obj = cls(year,month,day)
# 返回对象
return obj
# 只有在当前文件直接运行时,才会执行以下代码
if __name__ == '__main__':
# 指定写入文件的名称
FileManager.filename = 'all_student.txt'
# 执行写入功能函数
FileManager.write('hello')
FileManager.write('world')
FileManager.writelines(['hello', 'world', '你好', '张三'])
# 开始进行日期转换
# 转换之后 返回一个结果对象
date = DateTool.get_date('2020-2-22')
# date有三个属性,分别为 year month day
print(date.year)
print(date.month)
print(date.day)
- 测试工具文件
# -*- coding: utf-8 -*-
# 1.引入
from file_date import FileManager
from file_date import DateTool
# 更改类变量的值,指定数据存储的文件名称
FileManager.filename = 'test文件测试.txt'
# 自己定义的异常,也可以捕获
try:
# 写入一行
FileManager.write(1)
except Exception as e:
print(e)
FileManager.writelines(['hello','world','你好','世界'], split='-')
# 直接类调用get_date函数,会返回一个对象
obj = DateTool.get_date('2018-2-1')
print(obj)
print(obj.year)
print(obj.month)
print(obj.day)