python学习笔记(二)文件操作和集合
集合:
集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据
集合的作用:
1、它可以把一个列表中重复的数据去掉,而不需要你再写判断
2、可以做关系测试,比如说有两个班,一个性能测试班,一个是接口测试班的,想找出来既学习了性能又学习了接口测试的同学,就可以用集合
定义集合:
list = [,,,,,,,,,] #要创建一个set,需要提供一个list作为输入集合:
list_set = set(list) #这样就定义了一个集合
set1 = set([,,,,,]) #这种方式和上面的一样,也是把一个list转换成一个集合
set2 = {'aa','bb','cc'} #直接定义一个集合
集合操作:
set1 = {,,}
set2 = {,,,}
set1.add() #集合中增加元素
set2.pop() #集合中随机删除一个元素
set1.remove() #集合中删除指定元素,若指定元素不存在会报错
set1.update({,,}) #把另外一个集合驾到set1中去
set1.discard('') #如果删除元素存在,删除,不存在不做处理
set1.isdisjoint(set2) #判断set1与set2是否是不相交的,不相交返回True
print(set1 & set2) #两集合取交集
print(set1.intersection(set2)) #两集合取交集
print(set1 | set2) #两集合取并集
print(set1.union(set2)) #两集合取并集
print(set1.difference(set2)) #取差集 在set1中存在,set2中不存在的
print(set1 - set2)
print(set1.issubset(set2)) #判断set1是不是set2的子集
print(set1.issuperset(set2)) #判断set1是不是set2的父集
print(set1.symmetric_difference(set2)) #对称差集
print(set1 ^ set2)
交换变量:
在不引入第三个变量的同时交换两个变量的值
a = a+b
b = a-b
a = a-b
python中的简单用法
b,a= a,b #交换两个变量的值,Python底层帮你引入了一个的第三方变量在交换
a,b,c = c,a,b
深拷贝与浅拷贝:
浅拷贝和深拷贝的区别就是深拷贝会重新开辟一个内存空间
import copy
l1=[,,,,,,,,] #循环删list里面的数据的时候,结果会不正确
l2=l1 #浅拷贝
l3=copy.deepcopy(l1) #深拷贝
print("l1:",l1)
print("l2:",l2)
print("l3:",l3)
print('l1的内存地址是:',id(l1))
print('l2的内存地址是:',id(l2))
print('l3的内存地址是:',id(l3)) for i in l3:
if i%!=:
l1.remove(i)
print(l1)
布尔类型判断:
在做条件判断的时候记住:非空即真、非0即真
不为空的话就是true,是空的话就是false
只要不是0就是true,是0就是false
name = input('请输入你的名字:').strip()
a = [] #false
d={} # false
c = #false
f = tuple() #false
e='' #false
if name: #name里面有没有东西,
print('name不是为空的。。')
else:
print('输入不能为空。。')
文件操作
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
对文件的操作分三步:
1、打开文件获取文件的句柄,句柄就理解为这个文件
2、通过文件句柄操作文件
3、关闭文件。
现有file.txt文件
睡吧 睡吧 我亲爱的宝贝
妈妈的双手轻轻摇着你
摇篮摇你 快快安睡
夜已安静 被里多温暖
睡吧 睡吧 我亲爱的宝贝
爸爸的手臂永远保护你
世上一切 幸福愿望
一切温暖 全都属于你
睡吧 睡吧 我亲爱的宝贝
妈妈爱你 妈妈喜欢你
一束百合 一束玫瑰
等你睡醒 妈妈都给你
读文件
要以读文件的模式打开一个文件对象,使用Python内置的open()
函数,传入文件名和标示符:
f = open('register.txt','r') #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读
first_line = f.readline() #读取文件第一行的内容,返回的是一个字符串
print(first_line) #打印第一行
print(type(first_line)) #获取第一行返回数据的类型
list = f.readlines() #读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
print(list)
print(type(list))
res = f.read() #获取除了第一行剩下的所有文件内容
print(res)
f.close() #关闭文件
打开文件时,需指定文件路径以及文件以哪种方式打开。
打开文件的模式有
r 只读模式:只能读不能写
w 只写模式:只能写不能读,不存在则创建,存在则删除后再写
a 追加模式:不可读,不存在则创建,存在则只追加写上去
"+" 表示可以同时读写某个文件
r+ 【可读、可写;可追加,如果打开的文件不存在的话,会报错】
w+ 【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容,不存在则创建】
a+ 【追加读写模式,不存在则创建;存在则只追加内容;】
#只要沾上了r,文件不存在的就会报错
#只要沾上了w,都会清空原来的内容 文件操作方法:
f = open('geci','r+',encoding='utf-8')
f.readline() #读取文件第一行的内容,返回的是一个字符串
f.read() #获取除了第一行剩下的所有文件内容
f.readlines() #读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
f.readable() #判断文件是否可读
f.writable() #判断文件是否可写
# f.encoding() #打印文件编码
f.tell() #获取当前文件指针的指向
f.seek()#移动文件指针到最前面
f.write("写入内容")
f.flush()#写入文件后,立即从内存中把数据写到磁盘中
f.truncate()#清空文件内容
f.writelines(["aaaaaa","bbbbbbbbbb"])#将一个列表写入文件
f.close()#关闭文件
读取大文件时,需要高效的操作方法,例如f.read()和f.readlines()操作文件,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了
f = open('file.txt')
for line in f:
print(line)
#line就是每行文件的内容,读完一行的话,就会释放一行的内存
with使用:
在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:
with open('file.txt','r') as f:
for line in f:
print(line) with open('file.txt') as f:
with open('n_file.txt','w') as fn:
for line in f: #循环file.txt中的每一行
fn.write(line) #写到n_file文件中
修改文件:
修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中
第一种:
with open('file.txt','r+') as f:
res = f.read()
new_res = res.replace('我','mememe')
f.write(new_res)
第二种:
with open('file.txt') as f:
with open('n_file.txt','w') as fn: #这个是多文件的操作,打开两个文件,fr是读file.txt,fn是新建一个file_bak文件
for line in f:
new_line = line.replace('我','me')
fn.write(new_line)
#把一个列表写到文件中
list = [,,,]
f = open('file','w') #打开文件
for line in list: #循环list
new_line = str(line) #将list里的元素转换为字符串类型
f.write(new_line+'\n') #写入
#从文件读取元素存入列表
f = open('file','r') #打开文件
list1 = []
for line in f: #循环读取文件中的每一行
rs = line.rstrip('\n') #去除每一行中末尾的换行符
list1.append(rs) #添加到列表
print(list1)
有的时候将内容写入文件中后,在文件中看不到写入的内容,这时候需要flush一下,强制将缓冲区中内容写到磁盘上,这样写入文件的内容就能马上查看到了
fw = open('username','w')
fw.write('小崽子')
fw.flush() #强制把缓冲区里面的数据写到磁盘上
修改文件内容:
简单直接的方式
1、打开一个文件,获取到他的所有内容
2、对内容进行修改
3、清空原来文件的内容
4、把新的内容写进去
f = open('username','a+')
f.seek() #移动指针到文件最开始
res = f.read() #读取文件中所有内容
new_res = res.replace('','aaaaa') #将文件中''替换成'aaaaa'
f.seek() #读取完文件中内容后指针移动到文件末尾了,需要再次移动指针到文件最开始
f.truncate() #清空文件内容
f.write(new_res) #将修改后的内容写入文件中
f.close()
打开两个文件
1、读a文件中内容
2、修改a文件内容
3、写入到b文件中
4、删掉a文件,b文件名字改为a
import os
with open('a',encoding='utf-8') as fr,open('b',encoding='utf-8','w') as fw:
for line in fr:
new_line = line.replace('花','flower')
fw.write(new_line)
os.remove('a')
os.rename('b','a')
python学习笔记(二)文件操作和集合的更多相关文章
- python学习笔记:文件操作和集合
一.文件操作 文件读写步骤:有一个文件,打开文件,操作文件读写文件,关闭文件. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例) 模式 可做操作 若文件不存在 是否覆盖 r ...
- python学习笔记(三):文件操作和集合
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- python学习笔记三 文件操作(基础篇)
文件操作 打开文件 open(name[,mode[,buffering]]) open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉] w ...
- Python学习笔记 - day5 - 文件操作
Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- 我的Python学习笔记之文件操作
一,Python的文件类型有两种 1.文本文件 2.二进制文件 文件的操作: 1.打开文件,获取文件的控制权 2.读写文件 3.关闭文件,释放文件的控制权,如果不释放控制权,那么其他程序就不能访问此文 ...
- python学习笔记(五)-文件操作2
一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...
- python学习笔记(四)-文件操作
文件读写"""一.文件打开有3种方式 1.读 r #如果打开的文件的时候没有指定模式,那么默认是读 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错 2.写 w ...
随机推荐
- Go语言中字符串的查找方法小结
这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下 1.func Contains(s, substr strin ...
- JavaScript中的两个“0”(翻译)
本文翻译自JavaScript’s two zeros JavaScript has two zeros: −0 and +0. This post explains why that is and ...
- JQuery Show()的几种效果 总有一种是你需要的
1 show()方法和hide()方法 $("selector").show() 从display:none还原元素默认或已设置的display属性$("selecto ...
- IoC是一个很大的概念,可以用不同的方式实现。其主要形式有两种:
IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇依赖查找:容器提供回调接口和上下文条件给组件.EJB和ApacheAvalon都使用这种方式.这样一来,组件就必须使用容器提供的AP ...
- Git神器sourceTreesetup,让你的git效率迅速提升
image.png 小编之前在简书和公众号发不过idea如何git clone,git add,创建分支,创建码云的操作idea和Webstorm上使用git和github,码云最近又找到一款git神 ...
- sublime text 2安装Emment插件
写个自己看的 1. 命令行模式 ctrl+` 可以调出命令行模式(view->show console),主要支持python语法等,没试用过只知 quit()可以退出 ..不过sublime的 ...
- jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
本文实例讲述了jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法.分享给大家供大家参考.具体实现方法如下: 这里主要通过val方法设置按钮的文字,并用attr方法修改disabled属性实 ...
- [转]ASP.NET MVC 5 学习教程:快速入门
本教程将使用Visual Studio 2013手把手教你构建一个入门的ASP.NET MVC5 Web应用程序.本教程配套的C#源码工程可通过如下网址下载:C#版本源码链接.同时,请查阅 Build ...
- 自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)
将陆续上传新书<自己动手写CPU>.今天是第38篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了.一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9 ...
- iOS开发经验总结(一)
本文转载至 :http://dreamahui.iteye.com/blog/1878650 软件开发方面 1. 在每个页面的入口和出口(一般是viewDidLoad和dealloc)打上日志,可以 ...