Day3------集合、列表补充、文件
目录
一、集合
set {数据,数据,...}
集合中的类型是不可变类型
集合是可变类型
集合是无序的 不支持下标
集合的数据不重复
二、列表补充
1、列表排序中的key
2、列表推导式
三、文件
1、基础知识
2、文件的三种方式
3、文件的读操作
4、去除空白字符
5、读取大文件
6、存储概念
7、 文件分类
8、文件备份
四、文件相关训练
1、文件操作
2、文件
一、集合
set {数据,数据,...}
集合中的类型是不可变类型
集合是可变类型
集合是无序的 不支持下标
集合的数据不重复
my_set={1,2.3,4.56,'hell0',(34,547,)}
print(my_set)# remove()
my_set.remove(1)
print(my_set)
# pop()
a=my_set.pop()
print(a)
print(my_set)
# add()
my_set.add(45)
print(my_set)
# clear()
my_set.clear()
print(my_set)# 去重
my_list=[1,2,564,76,7,7,84,1]
print(my_list)
my_list=list(set(my_list))
print(my_list)
二、列表补充
1、列表排序中的key
# 数据类型保持一致
my_list=[1,3,5,7,9,45]
my_list.sort()
print(my_list)list1=[{'name':'d','age':19},{'name':'b.txt','age':16},{'name':'a','age':16},{'name':'c','age':20}]
# 列表中的数据为字典时,需指定排序规则
list1.sort(key=lambda x:x['name'])
print(list1)
list1.sort(key=lambda x:x['age'])
print(list1)
list1.sort(key=lambda x:(x['age'],x['name']))
print(list1)list2=['a','b.txt','sfa','defgf','fhdk']
list2.sort()
print(list2)
list2.sort(key=lambda x:len(x))
print(list2)
2、列表推导式
# 快速生成列表、字典# 1.txt、变量=[生成数据的规则 for 临时变量 in xxx]
my_list1=[i for i in range(5)]
my_list2=['hello' for i in range(5)]
my_list3=[f'num:{i}' for i in range(5)]
print(my_list1)
print(my_list2)
print(my_list3)# 2、变量=[生成数据的规则 for 临时变量 in xxx if xxx]
# if 成立才生成
my_list4=[f'num:{i}' for i in range(9) if i%2==0]
print(my_list4)# 3、变量=[生成数据的规则 for 临时变量 in xxx for j in xxx]
# 第二个for循环循环一次,生成一个数据
my_list5=[f'num:{i,j}' for i in range(3) for j in range(3)]
print(my_list5)# 字典推导式
# 变量={生成字典的规则 for 临时变量 in xxx]
my_dict={f'name{i}':i for i in range(3)}
print(my_dict)my_dict={f'name{i}{j}':j for i in range(3) for j in range(3)}
print(my_dict)
三、文件
1、基础知识
文件作用:永久保持数据文件在硬盘存储的格式是二进制 操作:打开-->读取-->操作1.txt、 打开 将文件从硬盘中存到内存 open(file,moder='r',encoding='') file:文件名 moder:文件打开方式 r()read w(write) a(append)追加 encoding:编码方式 utf-8 gbk 2、 读写 read() 3、 关闭 close() 将内存中三大文件同步到硬盘open函数打开文件,未指定编码方式时,windows默认gbk write函数写入,使用gbk
2、文件的三种方式
# r方式 文件不存在时,报错;
f=open('a.txt','r',encoding='utf-8')
buf=f.read()
print(buf)
f.close()# w方式 文件不存在时,自动创建;文件存在会覆盖清空源文件
f=open('a.txt','w',encoding='utf-8')
f.write('hello world\n')
f.write('hello python\n')
f.write('你好')
f.close()# a方式 文件末尾写入内容 文件不存在时,自动创建
f=open('a.txt','a',encoding='utf-8')
f.write('她她她\n')
f.write('他他他\n')
f.close()
3、文件的读操作
文件的读操作
buf=f.read(3) # 读三个字符
buf=f.read(3) # 再次读取时,如果有第二行,也会读取换行符\n
文件的读操作--按行读取
buf=f.readline() #读取一行 读取一次后,下次读取新内容
buf=f.readlines() #读取所有行 返回值为列表,一项为一个字符串
4、去除空白字符
f=open('a.txt','r',encoding='utf-8')
buf=f.readlines()
print(buf)
# 去除空白字符 列表推导
buf=[i.strip() for i in buf]
print(buf)
f.close()
5、读取大文件
# 有多行
f=open('a.txt','r',encoding='utf-8')
while True:buf=f.readline()if buf:print(buf,end='')else:# 文件读完break
f.close()# 没有多行
f=open('b.txt', 'r', encoding='utf-8')
while True:buf=f.read(5)if buf:print(buf,end='')else:# 文件读完break
f.close()
6、存储概念
计算机中的大小 进制:二进制八进制十进制十六进制 最小单位:bit(位) 字节:基本存储单位 byte 1byte=8 bit 1KB=1024 byte 1MB=1024KB 1GB=1024MB 1TB=1024GB100Mbit 12.5MB/s 200Mbit 25MB/s
7、 文件分类
文本文件 txt py 能使用记事本打开的文件
文本文件可以使用文本、二进制文件打开
二进制文件只是使用二进制方式打开 rb vb ab
二进制文件 mp3 mp4 rmvb 等 f=open('c.txt','wb')
f.write('你好'.encode()) # 字符串转换为二进制
f.close()f=open('c.txt','rb')
buf=f.read()
print(buf)
print(buf.decode())
f.close()
8、文件备份
1、用只读方式打开文件
2、读取
3、关闭
4、只写方式打开新文件
5、将第二部内容写入新文件
6、关闭新文件file_name=input('请输入要备份的文件名')f=open('file_name','rb')
buf=f.read()
f.close()index=file_name.rfind('.')
new_filename=file_name[:index]+'[备份]'+file_name[index:]
f_w=open('new_filename','wb')
f_w.write(buf) # 字符串转换为二进制
f.close()
9、文件相关操作
import os# 文件重命名
os.rename(源文件路径名,新文件路径名)# 删除文件
os.remove(文件路径名)# 创建文件夹
os.mkdir(目录路径名)# 获取当前目录
os.getcwd()# 改变默认目录
os.chdir('../')# 获取目录列表
os.listdir('./')# 删除文件夹
os.rmdir(目录名)
''''''
import os# 批量创建文件名
def create_files():os.chdir('test')for i in range(8):file_name='file_'+str(i)+'.txt'f=open(file_name,'w')f.close()os.chdir('../')# 批量修改文件名
def modify_filename():os.chdir('test')buf_list=os.listdir()for file in buf_list:new_file='ly'+fileos.rename(file,new_file)os.chdir('../')# 批量删除文件名局部
def re_filename():os.chdir('test')buf_list=os.listdir()for file in buf_list:num=len('ly')new_file=file[num:]os.rename(file,new_file)os.chdir('../')
re_filename()
'''
四、文件相关训练
1、文件操作
题目1 [加强训练]
题干
使用文件操作,向movie.txt
文件中写入一下内容:
功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥
训练目标
文件的写操作
训练提示
如何往一个文件里面写入数据
写入的数据换行使用什么方法
参考方案
打开文件
open()
,打开方式为"w"
写入文件
write()
换行使用
"\\n"
也可以使用
""" """
三个引号的形式,可以直接在代码里书写换行
操作步骤
打开文件,创建对象
写入信息
关闭文件
参考答案
第一种方式
# 因为编码格式的问题,我们为了防止出现乱码,需要在这里设置encoding="utf8"
f = open("movie.txt","w", encoding="utf8")
f.write("功夫,周星驰\\n一出好戏,黄渤\\n我不是药神,徐峥")
f.close()
第二种方式
f = open("movie.txt","w",encoding="utf8")
f.write("""功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥""")
f.close()
题目2 [加强训练]
题干
将第一题创建好的文件打开,并读取内容, 要求如下:
一次全部读取
每次读取一行
训练目标
文件的读操作
训练提示
如何读取文件内容?
读取全部内容的方法?
每次读取一行的方法?
参考方案
打开文件open,打开方式为“r”
读取文件read()
读取一行readline()
读取所有行readlines()
操作步骤
打开文件(使用r方式打开,如果不写那么默认是只读方式打开)
读取信息
关闭文件(每次操作完文件后要关闭文件)
参考答案
第一种方式
# 注意编码格式问题 f = open("movie.txt",'r',encoding="utf8") content = f.read() f.close() print(content)
第二种方式
f = open("movie.txt",'r',encoding="utf8") content = f.readlines() f.close() # 读取后的内容是一个列表,注意列表中的数据中有一个"\\n"。如果使用需要处理 print(content)
第三种方式
f = open("movie.txt",'r',encoding="utf8") # 因为readline 每次读取一行,需要我们使用循环读取 while True:content = f.readline()# 当我们读取的内容是空字符的时候跳出循环if content == "": # if content:breakprint(content) f.close()
题目3 [加强训练]
题干
使用os模块创建一个名为“黑马”的文件夹
获取黑马文件夹当前所在目录
获取当前的目录列表
改变文件的操作路径
将黑马文件夹删除
训练目标
os模块的使用
训练提示
os模块基础命令的使用
参考方案
创建文件mkdir
当前所在目录getcwd
当前的目录列表listdir
改变文件的操作路径chdir
删除文件夹rmdir
操作步骤
参考答案
import os# 01
os.mkdir("黑马")
# 02
os.getcwd()
# 03
os.listdir("../../../../../Desktop/")
# 04
os.chdir("../../../../../")
# 05
os.rmdir("黑马")
题目4 [综合训练1]
题干
编写一段代码以完成两份文件之间的相互备份
提示用户输入文件名。例:gailun.txt
创建以用户输入的名字的文件
打开文件写入如下信息
功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥
将输入的数据输出到终端上
在文件夹中创建gailun副本.txt文件
将gailun.txt文件中的数据写入gailun副本.txt文件中
打开文件,查看文件中内容
训练目标
文件的综合使用
训练提示
每次操作完文件需要关闭
在windows系统中注意编码格式问题
需要自己重新定义一个新的文件名
参考方案
操作步骤
操作步骤一
提示用户输入文件名
打开文件
写入信息
关闭文件
打开文件
读取文件中的信息
操作步骤二
提取文件名的后缀
组建新的文件名
操作步骤三
打开新组建的文件名字的文件
写入文步骤一中读取到的信息写入到新的文件中
关闭文件
操作步骤四
打开新的文件
读取文件中的内容
关闭文件
参考答案
# 提示输入文件
oldFileName = input("请输入要创建的文件名:")
# 以写的方式打开文件
oldFile = open(oldFileName, 'w', encoding="utf8")
oldFile.write("功夫,周星驰\\n一出好戏,黄渤\\n我不是药神,徐峥")
oldFile.close()
# 打开文件
f = open(oldFileName, 'r', encoding="utf8")
#读取文件内容
context = f.readlines()
print(context)
f.close()# 提取文件名的后缀
fileFlagNum = oldFileName.rfind('.')
# 确定文件名中有没有后缀, rfind() 找到内容返回正数下标,没有找到,返回-1
if fileFlagNum > 0:fileFlag = oldFileName[fileFlagNum:]# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + '复本' + fileFlag# 创建新的文件副本
newFile = open(newFileName, 'w',encoding="utf8")
for lineContent in context:print(lineContent)newFile.write(lineContent)
newFile.close()# 打开写入的新文件
f = open(newFileName, "r", encoding="utf8")
# 读取内容
context = f.read()
# 输入到终端
print(context)
# 关闭文件
f.close()
题目5 [综合训练2]
题干
创建一个新项目中新创建一个名字py文件夹
进入py文件夹中创建5个文件,文件名分别为python基础班-1.txt,python基础班-2.txt,python基础班-3.txt,python基础班-4.txt,python基础班-5.txt
然后将py文件夹中的所有文件都改名为[黑马]python基础班-1.txt,[黑马]python基础班-2.txt,[黑马]python基础班-3.txt,[黑马]python基础班-4.txt,[黑马]python基础班-5.txt
训练目标
os模块的综合使用
训练提示
首先创建文件夹,创建文件
然后,获取当前文件夹下所有文件
最后进行重命名
参考方案
创建文件夹mkdir
进入文件夹中chdir
获取文件夹中所有的文件listdir
重命名rename
操作步骤
第一部分
创建文件夹
进入文件夹中
循环遍历创建五个文件,每创建一个后关闭文件
第二部分
获取文件夹中所有的文件
遍历获取后的文件,并修改文件名称
参考答案
# 第一部分
import os
# 创建文件夹
os.mkdir("py")
# 进入py文件夹中
os.chdir("py")
# 创建5个文件
for i in range(1, 6):f = open("python基础班-%d.txt" % i, "w")f.close()# 第二部分
# 进入py文件夹中,由于上边代码中已经进入到“py”文件夹里面,这里就不用再次进入了
# os.chdir("py")
# 获取py文件夹中所有的文件
filename_list = os.listdir()
# 遍历文件
for file_name in filename_list:# 进行修改new_file_name = "[黑马]" + file_nameos.rename(file_name, new_file_name)
2、文件
题目[加强训练]
题干
使用递归求 1-100 累加和
训练目标
递归的使用
训练提示
递归的特点是什么?
如何求一个数的累加和?
参考方案
递归函数的特点:①函数自己调用自己 ②函数有结束条件
求 num 的累加和,只需要让 num-1 的累加和加上 num 即可。
操作步骤
书写结束条件
书写递归调用
参考答案
def sum_num(num):# 如果是1, 直接返回1if num == 1:return 1# 如果不是1, 重复执行累加return num + sum_num(num - 1)result = sum_num(100)
print(result)
题目[加强训练]
题干
编程实现向文件a.txt中书写好好学习,天天向上
的内容。
训练目标
文件操作练习
训练提示
python 中如何操作文件?
如何向文件中书写内容?
参考方案
打开文件使用 open 函数
向文中书写内容使用 write 函数
关闭文件用 close 函数
操作步骤
打开文件
向文件中写入内容
关闭文件
参考答案
# 1. 打开文件
f = open("test/a.txt", 'w', encoding="utf-8")# 2. 向文件中写入内容
f.write("好好学习,天天向上")# 3. 关闭文件
f.close()
Day3------集合、列表补充、文件相关推荐
- Python基础day06【匿名函数lambda、列表生成式、集合set、文件读写】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] 目录 1.复习 2.递归函数[理解] 2.1.递归求阶乘 3.匿名函数 3.1.匿名函数的4种 ...
- php redis 集合返回多条,详解PHP多个进程配合redis的有序集合实现大文件去重
1.对一个大文件比如我的文件为 -rw-r--r-- 1 ubuntu ubuntu 9.1G Mar 1 17:53 2018-12-awk-uniq.txt 2.使用split命令切割成10个小文 ...
- 使用Matlab把图片集合生成视频流文件
上一次在写过<使用Matlab读取视频流文件>博客,地址:https://blog.csdn.net/lingyunxianhe/article/details/83543282 这次是: ...
- windows获取文件列表及文件夹结构
1. 获取文件列表 命令: dir /B >lb.txt 查看磁盘D下的文件列表: 在D盘根目录下会生成文本文件lb.txt 2. 获取文件夹结构 命令: tree /f >1.txt 查 ...
- 跟着ALEX 学python day3集合 文件操作 函数和函数式编程
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理...
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- day3 集合、文件操作、函数、局部变量
文章目录 1.集合 2.文件操作 3.函数 4.局部变量 1.集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 1)去重,把一个列表变成集合,就自动去重了 2)关系测试,测试两 ...
- 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...
本文内容主要介绍了Python字符串.列表.元组.字典.集合,结合实例形式详细分析了Python字符串.列表.元组.字典.集合常见函数使用方法及相关操作注意事项,需要的朋友可以参考下!!! 附加: p ...
- 【Python-24】Python 元组+列表+字典+文件
本文转载自点击打开链接 Python的元组.列表.字典数据类型是Python内置的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些地方将会有很大的益处. 1元组 个人认为就 ...
最新文章
- Python基础教程:对象的方法
- 神经网络(1)--Non-linear hypotheses,为什么我们要学习神经网络这种算法来处理non-linear hypotheses...
- 如何打开手机端口_微信接收图纸dwg怎么打开?如何手机查看CAD图纸,三步免费教你...
- tez什么意思_传统数仓和大数据数仓的区别是什么?
- HTML5新增的表单元素有哪些?
- 企业任务管理工具“日事清”获星河互联1000万A轮融资
- python快速入门教程-Python快速入门
- Django学习笔记二
- 游戏筑基开发之字符串、字符指针、字符数组的相关知识梳理(C语言)
- php resize函数,Php Image Resize图片大小调整的函数代码
- (附源码)计算机毕业设计ssm基于JAVA宠物店管理系统
- 手机steam未能连接到服务器1004,steam与服务器连接失败
- MATLAB的WFDB软件下载及使用
- OA软件办公用品分类设置,实现办公用品分类透明化
- java生成随机数字和字母
- vue 路由懒加载 报错 Loading chunk * failed 组件加载不出来
- 计算机时代杂志好吗,计算机时代是什么级别的刊物
- Python实现复数运算
- JSON简介:什么是JSON?
- python网页爬虫菜鸟教程_【爬虫】菜鸟教程,支持翻页,存储