Python学习笔记:五

来源:互联网 发布:安卓刷linux系统 编辑:程序博客网 时间:2024/06/06 20:09

上周回顾

一 匿名函数

关键字: lambda

注意:

  1. lambda只是一个表达式 函数体比def简单很多
  2. lambda主体是一个表达式 而不是一个代码块 仅仅能在 lambda表达式中封装有限的逻辑进去

    #lambda匿名函数的使用
    # func = lambda a,b:a+b
    # print(func(3,5))

    #定义并调用
    # print((lambda a,b:a+b)(3,5))

    # a = 10
    # func = lambda:a
    # print(func())

附加

队列实现获取目录下所有文件名from collections import dequeimport ospath = r'C:\Users\xlg\PycharmProjects\shPython1701\day5流程控制'que = deque()que.append(path)while len(que) != 0:    myPath = que.popleft()    myList = os.listdir(myPath)    for fileName in myList:        # print(fileName)        newPath = os.path.join(myPath,fileName)        if os.path.isdir(newPath):            que.append(newPath)        else:            print("文件名",newPath)

二 文件的操作

(1) file = open(path,打开的方式) #打开文件 将会返回一个file对象 使用这种方式的打开 就需要去关闭

open的打开方式

函数名 函数的说明
r 以只读的方式打开 文件的描述符 放在文件的开头
rb 以二进制读的格式打开 文件的描述符 放在文件的开头
w 以清空写的方式打开 如果文件存在则清空 不存在则尝试创建
wb 以二进制清空写的格式打开 如果文件存在则清空 不存在则尝试创建
a 打开一个文件用于追加写 如果文件存在 文件描述会放在文件的末尾 不存在则尝试创建
ab 以二进制追加写的方式打开

(2) 文件的读取

file.read([size])   读取文件下的所有内容(默认)  如果 给指定了的size 会按照你的size去进行读取file.readline()     读取一行file.readlines()    读取所有的行 以列表的形式返回

(3) 文件的写

file.write(str)     将字符串写入文件file.writelines()   将字符串放在列表里  如果需要换行 则自己每个加入一个换行符

(4) 字符的编码

encode(字符编码)decode(字符解码)注意:如果以什么字符集进行编码  那么就以什么字符进行解码

(5)例子

分别按年龄和区域划分数据,并存入相应文件数据格式:曹阳,32010619720506042x,F,19720506,-,210005,13770848687,025-842019149,-,cy_qing@163.com,0孙旸,310104198405232812,M,19840523,上海市瑞金二路129弄6号,-,13764090424,-,-,gemini9991@gmail.com,jingjing,420105197404030028,F,19740403,-,430060,15871377772,027-88219588,-,74jingjing@163.com,0python代码:# 按年龄划分import codecspath = 'F:\qianfeng\python36\day09/kaifanglist.txt'path2 = 'F:\qianfeng\python36\day09/作业划分/年龄划分'path3 = 'F:\qianfeng\python36\day09/作业划分/区域划分'# 获取全部数据def getData(path):    with codecs.open(path, 'rb', encoding='UTF-8', errors='ignore') as file:        dataList = file.readlines()    return dataList# 根据需要切片取出数据def getNeedData(dataList, index, begin, end):    needList = []    for line in dataList:        need = line.split(',')[index][begin : end]        needList.append(need)    return needList# 根据要求列表创建文件def mkDir(needList, path):    for need in needList:        # print(need, type(need))        file = open(path + '/' + need + '.txt', 'wb')# 匹配出生年份,将对应的数据写入文件中def writeData(dataList, needList, index, begin, end, path):    for need in needList:        for line in dataList:            if str(need) == line.split(',')[index][begin : end]:                file = open(path + '/' + str(need) + '.txt', 'ab')                file.write((line + '\n').encode('UTF-8'))                file.close()# 匹配区域代码,将对应的数据写入文件中def writeData2(dataList, needList, index, begin, end, path, areaList = None):    for line in dataList:        for need in needList:            if str(need) == line.split(',')[index][begin: end]:                file = open(path + '/' + areaList[need - 1][1] + '.txt', 'ab')                file.write((line + '\n').encode('UTF-8'))                file.close()# 获取全部文件数据dataList = getData(path)# 按年龄划分# 全部不重复的出生年份# ageList = set(getNeedData(dataList, 1, 6, 10))# # 根据年龄创建文件# mkDir(ageList, path2)# # 匹配出生年份,将对应的数据写入文件中# writeData(dataList, ageList, 1, 6, 10, path2)# 按区域划分# 全部区域代码列表areaList = [[1, '华北地区'], [4, '华中地区'], [2, '东北地区'], [3, '华东地区'], [5, '西南地区'], [6, '西北地区']]# 根据区域创建文件# 先获取区域名称,添加到列表中,areaName = []areaNum = []for area in areaList:    areaName.append(area[1])    areaNum.append(area[0])# 然后将列表传递过去,创建文件mkDir(areaName, path3)# 匹配区域代码,将对应的数据写入文件中writeData2(dataList, areaNum, 1, 0, 1, path3, areaList)
原创粉丝点击