[学习笔记]Head First Python 第7章 Web开发 集成在一起 7-1批量读取数据存在一个字典里

# 第7章 Web开发 集成在一起
# 批量读取数据存在一个字典里
import pickle

class AthleteList(list):
    def __init__(self, a_name, a_dob=None, a_times=[]):
        list.__init__([])
        self.name = a_name
        self.dob = a_dob
        self.extend(a_times)            # 这一句是干啥的,注释掉看来也不影响

    def top3(self):
        return (sorted(set([sanitize(t) for t in self]))[0:3])


def readdata(file):
    try:
        with open(file) as datafile:
            data = datafile.readline()
        data = data.strip().split(',')  # 从字符串首尾去除不想要的空白符'/n' # 方法串联
        # (data_name, data_dob) = data.pop(0), data.pop(0)          # 元胞数组   # pop()删除指定数据并提取出来

        # templ = {Athlete.name: data.pop(0), Athlete.dob: data.pop(0),  # 字典
        #          Athlete.times: data}
        templ = AthleteList(data.pop(0), data.pop(0), data)             # 类
        return templ
    except IOError as ioerr:
        print('File error:' + str(ioerr))
        return (None)


# 这一段好好理解消化,all_athletes是怎样填充的数据
def put_to_store(files_list):
    all_athletes = {}
    for each_file in files_list:
        ath = readdata(each_file)
        all_athletes[ath.name] = ath
    try:
        with open('athletes.pickle', 'wb') as athf:
            pickle.dump(all_athletes, athf)
    except IOError as ioerr:
        print('File error(put_and_store):' + str(ioerr))
    return (all_athletes)


def get_from_store():
    all_athletes = {}
    try:
        with open('athletes.pickle', 'rb') as athf:
            all_athletes = pickle.load(athf)
    except IOError as ioerr:
        print('File error(put_and_store):' + str(ioerr))
    return (all_athletes)


print(dir())

the_files = ['.\\hfpy_ch6_data\\james2.txt',
             '.\\hfpy_ch6_data\\julie2.txt',
             '.\\hfpy_ch6_data\\mikey2.txt',
             '.\\hfpy_ch6_data\\sarah2.txt']

# 使用现有数据显示
data = put_to_store(the_files)
print(data)

for each_athlete in data:
    print(data[each_athlete].name + ' ' + data[each_athlete].dob)
# 腌制数据显示
data_copy = get_from_store()
print(data_copy)

for each_athlete in data_copy:
    print(data_copy[each_athlete].name + ' ' + data_copy[each_athlete].dob)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值