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中提供了必要的函数和方法进行默认情况下的文 ...
随机推荐
- 9.26 开课第二十三天 (JS表单验证)
<form action="lizi1.html" method="post"> 非空验证 <input type="text&qu ...
- TMS320VC5509串口通信
1. 串口通信使用MCBSP外设的DX1,DRA引脚 很多同学喜欢把这个MCBSP驱动音频芯片TLV320AIC23,同时也作为串口,那么一般用的拨码开关去选择,反正自己看着拨一下 2. 遇到的一个问 ...
- PageIOLatch和PageLatch
Latch是轻量级的锁,它是SQL Server内部用来同步资源访问的一个数据结构,使数据的访问同步有序,这意味着,当一个线程获得资源R的Latch的独占使用权时,如果其他的线程也想访问这个Latch ...
- (转)为什么所有浏览器的user-agent都是Mozilla
最早的时候有一个浏览器叫NCSA Mosaic,把自己标称为NCSA_Mosaic/2.0 (Windows 3.1),它支持文字显示的同时还支持图片,于是Web开始好玩起来. 然后出现了一个新的网页 ...
- ASP.NET Application Life Cycle
The table in this topic details the steps performed while an XAF ASP.NET application is running. Not ...
- 2018年美国大学生数学建模竞赛(MCM/ICM) 比赛心得
话不多说,题目先上: 这是我们这次选择的题目,说说建模的那些事! 美赛的时间和国赛挑战杯时间略有不同,貌似多的一天是为了让我们对文章进行一个翻译吧QAQ 建议参加美赛的同学可以参照此计划进行 Day0 ...
- 经典笔试题:用C写一个函数测试当前机器大小端模式
“用C语言写一个函数测试当前机器的大小端模式”是一个经典的笔试题,如下使用两种方式进行解答: 1. 用union来测试机器的大小端 #include <stdio.h> union tes ...
- sublime text 安装json插件
1.安装JSON插件(直接安装或在线插件安装均可) 1-1.直接安装 下载安装包https://github.com/dzhibas/SublimePrettyJson,解压缩到Packages目录( ...
- [codeForce-1006C]-Three Parts of the Array (简单题)
You are given an array d1,d2,…,dnd1,d2,…,dn consisting of nn integer numbers. Your task is to split ...
- Python 自动爬取B站视频
文件名自定义(文件格式为.py),脚本内容: #!/usr/bin/env python #-*-coding:utf-8-*- import requests import random impor ...