一.文件操作

对文件的操作分三步:

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基础(四)文件操作和集合的更多相关文章

  1. python基础四(文件操作)

    1.文件操作的基本流程 1.1 文件操作的基本流程 # 绝对路径 # r"d:/葫芦娃.txt 前面的r 为转义. linux平台和windows的分隔符不同 f = open(r" ...

  2. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  3. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  4. Day3 Python基础学习——文件操作、函数

    一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...

  5. 【python基础】文件操作

    文件操作目录 一 .文件操作 二 .打开文件的模式 三 .操作文件的方法 四 .文件内光标移动 五. 文件的修改 一.文件操作介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用pyt ...

  6. python基础之数据类型操作补充,集合及其操作,深浅拷贝

    内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...

  7. python基础4文件操作

    在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...

  8. Python基础 之 文件操作

    文件操作 一.路径 文件绝对路径:d:\python.txt 文件相对路径:在IDEA左边的文件夹中 二.编码方式 utf-8 gbk... 三.操作方式 1.只读 r 和 rb 绝对路径的打开操作 ...

  9. Python基础学习——文件操作、函数

    一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...

  10. python基础之文件操作

    对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...

随机推荐

  1. PostgreSQL的xlog实验一

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到顶级页面:PostgreSQL索引页 一,从initdb开始,initdb执行结束 ...

  2. UWP 轨道视图Orbit View

    先看一下效果吧 这是我的Music Tags App里面的效果图,当然你也可以做的比我的更炫. 其实这个效果的实现来自于控件UWP Community Toolkit的OrbitView,所以大家要多 ...

  3. JavaScript——变量与基本数据类型

    前言 JavaScript中的变量为松散类型,所谓松散类型就是指当一个变量被申明出来就可以保存任意类型的值,就是不像SQL一样申明某个键值为int就只能保存整型数值,申明varchar只能保存字符串. ...

  4. 【敏捷】7.showcase,开发中必须引起重视的小环节

    有人说,测试者来自火星,开发者来自金星.这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明.开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发 ...

  5. iframe的简单使用方法

    1.父页面调用子页面的元素(a代表iframe的id或者class,b代表子页面) $('a').contents().find("b") 2.子页面调用父页面的元素(c代表父页面 ...

  6. Unity特殊文件夹详解

    ##1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor ...

  7. Vuejs 使用 lib 库模式打包 umd 解决 NPM 包发布的问题

    由于升级了 v0.2 版 GearCase 使用打包工具从 parcel 更换成 vue-cli 3.x.因此打包后发布 NPM 包的方式与之前有很大的差异,这也导致了在发布完 GearCase v0 ...

  8. NO.5:自学python之路------标准库,正则表达式

    引言 时间过的好快呀,终于6级也考完了,学习Python的进度也得赶赶了.好的开始这一周的内容. 正文 模块 模块的本质就是‘.py’结尾的文件,它可以用来从逻辑上组织Python代码,它可以是变量. ...

  9. 用Solidity在Truffle上构建一个HelloWorld智能合约

    原文地址:石匠的blog Truffle的环境安装在前文已经整理,这次用Solidity在Truffle写一个HelloWorld以太坊智能合约,并在testrpc上进行测试.当前的软件版本信息如下: ...

  10. VMware启动Centos时出现错误Cannot open the disk 'xxxxxxx.vmdk' or one of the snapshot disks it depends on. .

    今天拔装虚拟机的硬盘的时候,没有关掉虚拟机,导致虚拟打开的时候出现:Cannot open the disk 'xxxxxxx.vmdk' or one of the snapshot disks i ...