这篇博客来说一下python对文件的操作。

对文件的操作分三步:

1、打开文件获取文件的句柄,句柄就理解为这个文件

2、通过文件句柄操作文件

3、关闭文件。

现有以下文件file.txt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

寂寞当然有一点

你不在我身边

总是特别想念你的脸

距离是一份考卷

测量相爱的誓言

最后会不会实现

我们为爱还在学

学沟通的语言

学着谅解

学着不流泪

等到我们学会飞

飞越黑夜和考验

日子就要从孤单里毕业

我们用多一点点的辛苦

来交换多一点点的幸福

就算幸福

还有一段路

等我们学会忍耐和付出

这爱情一定会有张证书

证明

从此不孤独

从此不孤独

文件基本操作:

1

2

3

4

5

6

7

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()#关闭文件

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,后面通过此文件句柄对该文件操作,

打开文件的模式有:

1

2

3

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【不可读; 不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

1

2

3

r+,【可读、可写;可追加,如果打开的文件不存在的话,会报错】

w+,【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】

a+,【追加读写模式,不存在则创建;存在则只追加内容;】

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

1

2

rU

r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

1

2

3

rb

wb

ab

文件操作方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

f = open('file.txt','r+',encoding='utf-8')#encoding参数可以指定文件的编码

f.readline()#读一行

f.readable()#判断文件是否可读

fr.writable()#判断文件是否可写

fr.encoding#打印文件的编码

f.read()#读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆

f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆

f.tell()#获取当前文件的指针指向

f.seek(0)#把当前文件指针指向哪

f.write('爱情证书')#写入内容

f.fulsh()#写入文件后,立即从内存中把数据写到磁盘中

f.truncate()#清空文件内容

f.writelines(['爱情证书','孙燕姿'])#将一个列表写入文件中

f.close()关闭文件

大文件时,读取文件高效的操作方法:

用上面的read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了

1

2

3

4

f = open('file.txt')

for line in f:

print(line)

这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存

with使用:

在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:

1

2

3

4

5

6

7

with open('file.txt','r') as f:#打开一个文件,把这个文件的句柄付给f

forline inf:

print(line)

withopen('file.txt')asfr,withopen('file_bak','w')asfw:#这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件

forline infr:#循环file.txt中的每一行

fw.write(line)#写到file_bak文件中

修改文件:

修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中

第一种

1

2

3

4

withopen('file.txt','r+')asfr:

res=fr.read()

new_res=res.replace('我','me')

fr.write(new_res)

第二种

1

2

3

4

withopen('file.txt')asfr,withopen('file_new','w')asfw:#这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件

forline infr:#循环file.txt中的每一行

new_line=line.replace('我','me')

fw.write(new_line)#写到file_bak文件中

集合:

集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据

集合的作用:

1、它可以把一个列表中重复的数据去掉,而不需要你再写判断

2、可以做关系测试,比如说有两个班,一个性能测试班,一个是接口测试班的,想找出来既学习了性能又学习了接口测试的同学,就可以用集合

定义集合

1

2

3

4

list = [2,3,1,2,3,4]

s_list = set(list)#这样就定义了一个集合

set1 = set([1,3,4,5,6])#这种方式和上面的都是把list转换成一个集合

set2={'hehe','hehe1','hehe3'}#这种方式是直接定义一个集合

集合操作

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

list1 = {1, 2, 3, 4, 5, 6, 9}

list2 = {2, 3, 4, 6, 1}

list3 = {1, 2, 3}

print(list1.intersection(list2))  # 取交集,也就是取list1和list2中都有的

print(list1 & list2)# 取交集

print(list1.union(list2))  # 取并集,也就是把list1和list2合并了,然后去除重复的

print(list1 | list2)# 取并集

print(list1.difference(list2))  #取差集 在list中存在,在list2中没有的

print(list1 - list2)

print(list3.issubset(list1))#判断list3是不是list1的子集

print(list1.issuperset(list3))#判断list1是不是list3的父集

print(list1.isdisjoint(list3))#判断list1和list3是否有交集

print(list1.symmetric_difference(list2))#对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉

print(list1 ^ list2)

list1.add(888)#添加元素

list1.update([777,666,666])

list1.remove(777)#删除元素,如果元素不存在会报错

list1.pop()#删除一个随机的元素,并返回删除的元素

list1.discard('dddd')#如果删除的元素存在,删除,不存在不做处理

python文件是什么的集合和抽象_python学习笔记(三):文件操作和集合相关推荐

  1. python shutil删除文件_Python学习笔记组织文件之shutil模块

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  2. python读取文件路径格式_Python学习笔记读写文件之文件与文件路径

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  3. java线程集合点_Java多线程学习笔记(三) 甚欢篇

    使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...

  4. python3 读取.plist文件_Python学习笔记 -5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  5. python中简述对象和类的关系_Python学习笔记(七)对象和类

    什么是对象 Python中所有的数据都是以对象的形式存在,无论是简单的数字类型还是复杂的代码模块.在Python中,当我们想要创建属于自己的对象或者修改已有对象的行为时,才需要关注对象的内部实现细节. ...

  6. python input 拖入路径 去除转义 空格_python学习笔记(基础-2)(转载)

    1.输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字. 2.输入 如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输入字符串,并存放到一个变 ...

  7. APUE 学习笔记(三) 文件和目录

    1. 文件类型 文件类型信息包含在 struct stat 里的 st_mode 成员 (1)普通文件,unix内核并不区分文本文件和二进制文件 (2)目录文件,这种文件包含了其他文件的名字以及指向这 ...

  8. python序列类型唯一的映射类型_python2.x学习笔记(8)-映射和集合类型

    1. 字典是 Python 语言中唯一的映射类型.映射类型对象里哈希值(键) 和指向的对象(值)是一对一的关系. 2. 一个字典对象是可变的,它是一个容器类型,能存储任意个数的 Python 对象,其 ...

  9. 如何用python画帆船_python学习笔记6——文件操作来生成船只侧面图像的描述文件...

    最近在做船只检测的工作需要大量的正样本,之前的一些样本各种形态的船只都有,这一次训练分类器希望使用只含船只侧面的图像,这样检测船的侧面的成功率可能会提高一点.这样就需要大量的船只侧面图像,并生成描述文 ...

最新文章

  1. 2020 年技术趋势一览:AutoML、联邦学习、云寡头时代的终结
  2. Java的Web项目使用DWR简单配置说明
  3. mongodb--常用命令
  4. 基于云计算的海量数据挖掘
  5. 在数据准备区中允许使用的数据结构有哪些, 各有什么优点?
  6. MySQL缓存的查询和清除命令使用详解
  7. OP AMP - 反馈理论在运放中的应用
  8. 二级域名和二级目录的联系与区别
  9. clipse中使用maven插件的时候,运行run as maven build的时候报错:
  10. Maven常见异常及解决方法
  11. Matplotlib 基本用法
  12. [照片]51cto众生相
  13. 使用pyqt开发gui(pyqt集成到pycharm)
  14. 实现一个简单的类似spring的pointcut正则表达式
  15. Redis Lua脚本
  16. 阿里视觉AI训练营-day05-创意日-你的图像识别项目
  17. 构建具有时间依存协变量的Elastic-net Cox模型
  18. 页面可视化搭建工具业界的轮子
  19. 2019年安徽大学ACM/ICPC实验室新生赛(公开赛)
  20. 【GP6安装配置】 Greenplum6.2.1 安装手记(下)

热门文章

  1. 用css给我画一朵花
  2. H5端根据指定地址显示地图并且可调起三大主流地图软件(腾讯、百度、高德)
  3. 8月22日到26日工作收获
  4. Java Swing五子棋
  5. 破解STM32F103芯片的方法
  6. Flink入门(五) 实时流Join ElasticSearch6维度表
  7. R语言:填色等值线图及其色标(color bar)设置
  8. 求某学生8门课的平均分
  9. 集合 - Java篇
  10. 简约好用的日期时间选择js插件