python基础(四)文件操作和集合
一.文件操作
对文件的操作分三步:
1、打开文件获取文件的句柄,句柄就理解为这个文件
2、通过文件句柄操作文件
3、关闭文件。
1.文件基本操作:
- f = open('file.txt','r') #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读,
- 在python2中还有file方法可以打开文件,python3中file方法已经没有了,只有open
- frist_line = f.readline()#获取文件的第一行内容,返回的是一个list
- print(frist_line)#打印第一行
- res = f.read()#获取除了第一行剩下的所有文件内容,文件句柄发生了变化
- print(res)
- f.close()#关闭文件
2.文件打开模式:
r:只读,不加模式默认为r
w:只写,[不可读,不存在则创建,存在则删除内容]
a:追加,[不可读,不存在则创建,存在则只追加内容]
"+" 表示可以同时读写某个文件
r+ :读写--可读、可写、可追加,如果打开的文件不存在的话,会报错
w+ :写读--先创建文件,再写(在原文件上的修改都是覆盖操作)
a+ :追加读--默认打开句柄在末尾,读取需先seek(0)指定位置,一写句柄就到末尾了
#r和w,seek指定句柄可以覆盖修改,a+指定句柄也是追加
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
# windows上换行符为 \r\n
"b"表示处理二进制文件
rb:二进制文件读
wb:二进制文件写
ab:追加二进制
# 文件存在硬盘上都是二进制,前边说encoding='utf-8'是指把二进制转换成utf-8编码打开,
# 而“b”是指,不用转换编码,我直接读取二进制
3.文件操作:
f = open("1.txt", 'r', encoding="utf-8")
# encoding="utf-8",utf-8编码打开文件,windows下默认gbk打开
f.readline() # 读一行,字符串
f.readable() # 判断文件是否可读
f.writable() # 判断文件是否可写
f.encoding() # 打印文件的编码
f.read() # 读取文件句柄到结束所有内容,大文件时不要用,因为会把文件内容都读到内存中
f.readlines() # 读取文件所有内容,返回一个list,元素是每行的数据,大文件时不要用
f.write("天安门") # 写入内容,r和w模式,为句柄处覆盖写入,a模式写到最后
f.writelines(['zhangsan'],['李四']) #将一个列表写入文件中
f.flush() # 强制刷新(默认缓冲区满了存入磁盘)
f.close() # 文件关闭
f.closed() # 判断文件是否关闭
f.read(5) # 读取5个字符
f.tell() # 查看文件句柄位置。按照字符计数
f.seek(0) # 移动文件句柄到第0个字符位置
f.encoding # 文件编码
f.truncate() # 什么不写清空文件
f.truncate(10) # r模式截断出前10个字符,其他模式还是清空
大文件时,读取文件高效的操作方法:
用上面的read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了
f = open('file.txt')
for line in f: # f 变成了迭代器
print(line) # 判断行的话,需自己加个计数器
4.文件内容修改
前面说的文件修改,只是对原内容覆盖,并不会插入内容,原内容往后移,因为这样有可能就把其他文件覆盖了,文件发生损坏。so:
文件修改两个办法:
1. 加载到内存,内存修改,覆盖写回
2. 另打开一个文件,修改完写到新文件中
with open("test", 'r+', encoding='utf-8') as fr
res = fr.read()
new_res = res.replace('我','me')
fr.write(new_res)
with open("test", 'r', encoding='utf-8') as f, \
open("test.tmp", 'w', encoding='utf-8') as f_new:
for line in f:
if "聚焦头条" in line:
line = line.replace("聚焦头条","fgf")
f_new.write(line)
# os.path.exists("test.bak") 判断文件是否存在
# os.remove("test.bak") 删除文件
# os.rename(test.tmp, test) 重命名
5.文件关闭(with语句)
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log') as f:
pass
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理
二.集合
集合也是一种数据类型,一个类似列表的东西,特点是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
1、常用操作
去重
list_1 = [1,1,2,3,4,5,6,6,7,7,8,8,9,9,3]
set_1 = set(list_1)
>>> set_1
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# 集合用{}表示
交集
set_2 ={0,2,3,4}
set_1.intersection(set_2)
set_1&set_2
并集:
set_1.union(set_2)
set_1 | set_2
差集:
set_1.difference(set_2)
set_1 - set_2
# in set_1 but not in set_2
子集:
set_1.issubset(set_2) #判断set_1是不是set_2的子集
父集:
set_1.issuperset(set_2) #判断set_1是不是set_2的父集
对称差集:(并集去除交集,即并集和交集的差集) 输出2个列表都没有的值
set_1.symmetric_difference(set_2) 即(set_1 | set_2) - (set_1 & set_2)
set_1 ^ set_2
判断有没有交集,无交集,返回True
set_1.isdisjoint(set_2)
2、符号操作
& : 交集 intersection
| :并集 union
- :差集 difference
s <= t :子集 issubset
s >= t :父集 issuperset
^ :对称差集 symmetric_difference
3、集合增删改查
添加:
set_1.add(99)
批量添加
set_1.update([1,2,3,4])
删除:
set_1.remove('h') # 没有则报错
set_1.discard(99) # 在则删除,不在就不操作。无返回信息
随机删:
set_1.pop()
长度:
len(set_1)
是否属于判断
s in set_1 # (判断成员在不在都是这么写,字典中判断key)
返回 set “s”的一个浅复制
s.copy()
python基础(四)文件操作和集合的更多相关文章
- python基础四(文件操作)
1.文件操作的基本流程 1.1 文件操作的基本流程 # 绝对路径 # r"d:/葫芦娃.txt 前面的r 为转义. linux平台和windows的分隔符不同 f = open(r" ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- python学习笔记:文件操作和集合(转)
转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...
- Day3 Python基础学习——文件操作、函数
一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...
- 【python基础】文件操作
文件操作目录 一 .文件操作 二 .打开文件的模式 三 .操作文件的方法 四 .文件内光标移动 五. 文件的修改 一.文件操作介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用pyt ...
- python基础之数据类型操作补充,集合及其操作,深浅拷贝
内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...
- python基础4文件操作
在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...
- Python基础 之 文件操作
文件操作 一.路径 文件绝对路径:d:\python.txt 文件相对路径:在IDEA左边的文件夹中 二.编码方式 utf-8 gbk... 三.操作方式 1.只读 r 和 rb 绝对路径的打开操作 ...
- Python基础学习——文件操作、函数
一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...
- python基础之文件操作
对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...
随机推荐
- 2017-2018-1 20155331 课下测试(ch10)
2017-2018-1 20155331 课下测试(ch10) 假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是(A) Image 7.png A . c = f B . c ...
- PostgreSQL的HOT(Heap-Only Tuples)
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页 回到顶级页面:PostgreSQL索引页 HOT的解释: 如下的日文文档中,有几个图示, ...
- Velocity的学习1
Velocity 是一个基于Java的的模板引擎,通过特定的语法,速度可以获取在的Java语言中定义的对象,从而实现界面和Java的代码的真正分离,这意味着可以使用Velocity替代JSP的开发模式 ...
- 4513: [Sdoi2016]储能表
4513: [Sdoi2016]储能表 链接 分析: 数位dp. 横坐标和纵坐标一起数位dp,分别记录当前横纵坐标中这一位是否受n或m的限制,在记录一维表示当前是否已经大于k了. 然后需要两个数组记录 ...
- 关于js中直接获取后台的值,直接弹窗获取到的值
js里获取后台的值,以前我都是后台通过jsp中的<input>EL表达式: 后台代码把传向页面的值放入request:request.setAttribute("Success& ...
- 一个本地DNS解析和mysql授权导致的Mysq连接失败问题(Access denied for user 'loan'@'kfcsdb1' (using password: YES))
web:/home/web/ -u loan -p loan Enter password: ERROR 1045 (28000): Access denied for user 'loan'@'kf ...
- jquery 直接访问图片路径
jQuery("#img").attr("src",function(){return this.src+"?"});
- jenkins maven设置settings.xml
环境:jenkins.2.89.3 1.安装settings.xml管理插件Config File Provider Plugin 系统管理->管理插件->搜索Config File P ...
- cap原则(cap定理)与base理论
CAP定理c:一致性 Consistency: 分布式系统中,所有数据备份,同一时刻存在一样的值.当在分布式环境中,当一个地方写入返回成功的结果,其他地方也应读取到最新的数据.a:可用性 Availa ...
- 第一次玩github,第一个开源小项目——xxoo
引言 由于最近的工作写代码比较少,这让LZ产生了一丝危机感.于是便想找一个办法可以没事自己写写代码,自然而然就想到了github.接下来便是一阵捣鼓的过程,其实整个过程很快,主要过程就是注册一个账号, ...