f = open(‘student_msg‘, encoding=‘utf-8‘, mode=‘a+‘) # 打开一个文件,赋值给f

print(type(f), f) # f文件句柄是属于一个类叫,也是可迭代对象。(io ---> input and out)

print(dir(f)) # 打印这个类的所有属性和方法

>>

[‘_CHUNK_SIZE‘, ‘class‘, ‘del‘, ‘delattr‘, ‘dict‘, ‘dir‘, ‘doc‘, ‘enter‘, ‘eq‘, ‘exit‘, ‘format‘, ‘ge‘, ‘getattribute‘, ‘getstate‘, ‘gt‘, ‘hash‘, ‘init‘, ‘init_subclass‘, ‘iter‘, ‘le‘, ‘lt‘, ‘ne‘, ‘new‘, ‘next‘, ‘reduce‘, ‘reduce_ex‘, ‘repr‘, ‘setattr‘, ‘sizeof‘, ‘str‘, ‘subclasshook‘, ‘_checkClosed‘, ‘_checkReadable‘, ‘_checkSeekable‘, ‘_checkWritable‘, ‘_finalizing‘, ‘buffer‘, ‘close‘, ‘closed‘, ‘detach‘, ‘encoding‘, ‘errors‘, ‘fileno‘, ‘flush‘, ‘isatty‘, ‘line_buffering‘, ‘mode‘, ‘name‘, ‘newlines‘, ‘read‘, ‘readable‘, ‘readline‘, ‘readlines‘, ‘reconfigure‘, ‘seek‘, ‘seekable‘, ‘tell‘, ‘truncate‘, ‘writable‘, ‘write‘, ‘write_through‘, ‘writelines‘]

print(f.dict) # f 这个实例化对象中的属性 {‘mode‘: ‘a+‘}

源码对其的解释定义

‘‘‘

========= ===============================================================

Character Meaning

‘r‘ open for reading (default) 默认只读

‘w‘ open for writing, truncating the file first 首先把文件截断(全删了)

‘x‘ create a new file and open it for writing

‘a‘ open for writing, appending to the end of the file if it exists 追加模式

‘b‘ binary mode 二进制模式,打开图片或者非文本格式时

‘t‘ text mode (default) 默认读取文本

‘+‘ open a disk file for updating (reading and writing) 可读可写

========= ===============================================================

‘‘‘

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

文件的操作使用的频率还是很高,这几种方法很容易弄混,为了避免以后出现偏差,现在我把几种常用的方法整理透。

一,.readline() 和 .readlines() 目的是浏览,查找文件中的内容用什么模式。先看用六种方式执行的结果。

在register文件中有以下内容,看下分别执行这六种方式返回的结果

”’

这些是文件中的内容

dumingjun

mickle|male

”’

mode=‘r‘

with open(‘register‘, encoding=‘utf-8‘, mode=‘r‘) as f:

print(f.readline())

print(f.readlines())

>>运行结果:(文件中内容无变化)

‘‘‘

这些是文件中的内容

[‘dumingjun\n‘, ‘mickle|male‘]

‘‘‘

mode=‘r+‘

with open(‘register‘, encoding=‘utf-8‘, mode=‘r+‘) as f:

print(f.readline())

print(f.readlines())

>>运行结果:(文件中内容无变化)

‘‘‘

这些是文件中的内容 # 先读了一行

[‘dumingjun\n‘, ‘mickle|male‘] # 然后往下执行,把每行作为一个字符串放入列表这个容器中,换行符为\n

‘‘‘

mode=‘w‘

with open(‘register‘, encoding=‘utf-8‘, mode=‘w‘) as f:

print(f.readline())

print(f.readlines())

运行结果:(文件中已经没有内容了)

‘‘‘

Traceback (most recent call last):

print(f.readline())

io.UnsupportedOperation: not readable # 报错原因:’w‘模式是无法读的,只要看到’w‘,先把文件全清空

‘‘‘

mode=‘w+‘

with open(‘register‘, encoding=‘utf-8‘, mode=‘w+‘) as f:

print(f.readline())

print(f.readlines())

运行结果:(文件内容已经为空)

‘‘‘

先清空,然后接下来执行了f.readline() 由于为空,所以返回了空的字符

[] # 接下来执行f.readlines(), 返回一个空列表

‘‘‘

mode=‘a‘

with open(‘register‘, encoding=‘utf-8‘, mode=‘a‘) as f:

print(f.readline())

print(f.readlines())

运行结果:(文件内容不变)

‘‘‘

Traceback (most recent call last):

print(f.readline())

io.UnsupportedOperation: not readable # 报错原因,’a‘模式只能add,增加,不可读,因为’a‘模式进去时光标自动放在文件的末尾。

‘‘‘

mode=‘a+‘

with open(‘register‘, encoding=‘utf-8‘, mode=‘a+‘) as f:

print(f.readline())

print(f.readlines())

运行结果:(文件内容不变)

‘‘‘

因为光标是放在最后,所以读取的内容为空

[] # 同理redlines()返回的是一个空列表。

‘‘‘

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

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

以上代码的内容显示在图片上:

这里写图片描述

这里写图片描述

这里写图片描述

总结

这里写图片描述

阅读,查找相关内容,只能用‘r’或 ‘r+’模式

二 现在要新建一个文件,并且添加内容,先看看五种方法运行的结果

‘‘‘

创建名为‘msg‘的文件,并写入内容以下内容:

’Duminjun is swimming\n今晚吃鸡‘

‘‘‘

r模式就不用试了,r只能读,试试r+模式

with open(‘msg9‘, encoding=‘utf-8‘, mode=‘r‘) as f:

f.write(‘Duminjun is swimming\n今晚吃鸡‘)

运行结果:

‘‘‘

Traceback (most recent call last):

with open(‘msg‘, encoding=‘utf-8‘, mode=‘r+‘) as f:

FileNotFoundError: [Errno 2] No such file or directory: ‘msg‘ # 没有名为‘msg’的文件,证明r+模式不可添加文件

‘‘‘

a 模式

with open(‘msg‘, encoding=‘utf-8‘, mode=‘a‘) as f:

f.write(‘Duminjun is swimming\n今晚吃鸡‘)

#

运行结果(已经在本目录添加了‘msg’的文件,并且打开文件显示了以下内容:

‘‘‘

Duminjun is swimming # a 模式可以创建文件并写入

今晚吃鸡

‘‘‘

a+模式

with open(‘msg‘, encoding=‘utf-8‘, mode=‘a+‘) as f:

f.write(‘Duminjun is swimming\n今晚吃鸡‘)

运行结果:和以上a运行结果一样

w模式

with open(‘msg‘, encoding=‘utf-8‘, mode=‘w‘) as f:

f.write(‘Duminjun is swimming\n今晚吃鸡‘)

结果:和a模式一样

w+ 模式

with open(‘msg4‘, encoding=‘utf-8‘, mode=‘w+‘) as f:

f.write(‘Duminjun is swimming\n今晚吃鸡‘)

运行结果:和a模式行的结果一样

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

44

45

46

47

48

49

50

51

52

53

54

55

图示:

这里写图片描述

三 如果有名为’msg‘的文件里面有’Duminjun is swimming\n今晚吃鸡‘这些内容,现在要增加以下内容

’\nLaura is a playing tennis,What are you dong?’ 试试这几种方法的效果

r

with open(‘msg‘, encoding=‘utf-8‘, mode=‘r‘) as f:

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

运行结果:

‘‘‘

Traceback (most recent call last):

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

io.UnsupportedOperation: not writable # f这个实例化对象中没有可读这一属性

‘‘‘

r +

with open(‘msg‘, encoding=‘utf-8‘, mode=‘r+‘) as f:

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

运行结果:(没有报错,文件内容如下:)

‘‘‘

Laura is a playing tennis,What are you dong?s swimming

今晚吃鸡 # 添加的内容已经插入到了最前面,r+模式可以写入文件,但是进入文件句柄时光标在最前面

‘‘‘

如果想要r+模式增加内容到文末,可以先读完全部内容,光标就到了最后,然后在把内容写入文件

with open(‘msg‘, encoding=‘utf-8‘, mode=‘r+‘) as f:

f.readlines()

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

运行结果(文件内容如下):

‘‘‘

Duminjun is swimming

今晚吃鸡

Laura is a playing tennis,What are you dong?

‘‘‘

w

with open(‘msg‘, encoding=‘utf-8‘, mode=‘w‘) as f:

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

运行结果,文件中显示以下内容:

‘‘‘

Laura is a playing tennis,What are you dong? # 原文件内容全部清空,写入了新增加的内容

‘‘‘

w+

with open(‘msg‘, encoding=‘utf-8‘, mode=‘w+‘) as f:

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

运行结果:和w运行结果一样

a

with open(‘msg‘, encoding=‘utf-8‘, mode=‘a‘) as f:

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

#

运行结果,文件内容如下

‘‘‘

Duminjun is swimming

今晚吃鸡

Laura is a playing tennis,What are you dong? # 已经成功到文末

‘‘‘

a+

with open(‘msg‘, encoding=‘utf-8‘, mode=‘a+‘) as f:

f.write(‘\nLaura is a playing tennis,What are you dong?‘)

运行结果:和a模式结果一样

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

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

图示

这里写图片描述

这里写图片描述

四,例题:写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作

def modify_update():

file_name = input(‘please input the file name: ‘).strip()

modify_content = input(‘please input the content to modified: ‘)

new_content = input(‘please input new content you want to replace: ‘)

with open(‘{}‘.format(file_name), encoding=‘utf-8‘, mode=‘r+‘) as f, \

open(‘msk5‘, encoding=‘utf-8‘, mode=‘w+‘) as f1: # 打开两个文件句柄,一个读原文档,一个写入修改后的内容

for i in f:

f1.write(i.replace(‘{}‘.format(modify_content), ‘{}‘.format(new_content)))

边循环原文件每一行,边添加新的一行到另外一个文件,如果replace没有找到旧词,字符串不会做任何修改,所以不用if...else语句

‘‘‘

w,w+在一个句柄里操作不会每次都清空,只有重新以w,w+模式打开一个句柄并且使用f.write()才会清空,就是说两个句柄是没有

python文件打开赋值为空_python文件的操作相关推荐

  1. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  2. python open方法下file模块_python 文件操作

    一.基本概述 基本的文件操作也就常见的几种,创建.打开.读取.写入和关闭文件等.Python中有几个内置模块和方法来处理文件.这些方法在例如os,os.path,shutil和pathlib等等几个模 ...

  3. python文件读取下一个字符_python文件的读写总结

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  4. python文件和数据的格式化_Python文件和数据格式化(教程)

    文件是一个存储在副主存储器的数据序列,可包含任何数据内容. 概念上,文件是数据的集合和抽象,类似的,函数是程序的集合和抽象. 用文件形式组织和表达数据更有效也更加灵活. 文件包括两种形式,文本文件和二 ...

  5. python中file是什么意思_python文件file

    # 1.编写一个程序,接收用户输入的内容,并且保存为新的文件,如果用户输入:w,表示文件保存退出 with open(r'/Users/liucheng/Desktop/input2.txt', 'w ...

  6. 下列不是python对文件的操作方法的是_Python 文件操作

    文件操作三部曲:打开 -> 操作 -> 关闭. 一. 文件操作, 常用的几种模式: 如果打开文件,没有指定操作方式,默认是读取: 对于r/r+,如果文件不存在会报错,使用时需要保证文件存在 ...

  7. python中filepath路径怎么写_python文件路径操作方法总结

    在python中,文件使用十分频繁,本文将向大家介绍python文件路径的操作:得到指定文件路径.得到当前文件名.判断文件路径是否存在.获得指定文件夹下所有文件.获得文件后缀.拼接路径和文件名. 1. ...

  8. pom.xml文件第一行报错_Python文件读写指南

    作者:豌豆花下猫,某985高校毕业生, 兼具极客思维与人文情怀 .公众号[Python猫], 专注python技术.数据科学和深度学习,力图创造一个有趣又有用的学习分享平台. 对于初学者来说,一份详尽 ...

  9. python的打开方式有哪些_python中打开程序的方式有哪些

    python中打开程序的方式有哪些 发布时间:2020-08-10 11:58:08 来源:亿速云 阅读:64 作者:小新 这篇文章将为大家详细讲解有关python中打开程序的方式有哪些,小编觉得挺实 ...

最新文章

  1. Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0
  2. Python深浅拷贝教程-面试必问内容
  3. linux 下 php 扩展
  4. python打开哪个答案_关于 Python 文件的 ‘r’ 打开模式,哪个选项的描述是正确的?_学小易找答案...
  5. OpenCV3 Java 机器学习使用方法汇总
  6. Backend cache is always enabled
  7. 使用windows server backup备份还原hyper-v 3.0虚拟机
  8. SRE(Simple Rule Engine) Document
  9. python中seaborn_python的seaborn模块
  10. POI读取单元格信息及单元格公式
  11. 蓝桥杯 C语言 试题 算法训练 审美课
  12. Kibana:使用 drilldown 从一个仪表板切换到另外一个仪表板
  13. 战舰少女r魔盒服务器维护,战舰少女r魔盒官方
  14. ios零基础学习 准备什么,如何去学习
  15. Android 颜色透明度大全
  16. SQLserver管道的另一端无任何进程
  17. 联想 ThinkBook 15 LLI 蓝屏恢复
  18. JS面试须知--数组
  19. Android中常见的内存泄露
  20. 主题:windows xp 系统CMD命令大全(一)

热门文章

  1. linux fork函数及其简单应用
  2. 自动字幕对轴软件Autosub 用户手册(2.1)
  3. matlab simulink模型打开或者运行时就自动退出
  4. Android Glide使用
  5. 杂项(曾经的笔记本)
  6. Unity 3D游戏——神鬼传说
  7. Android之自定义标题栏
  8. 10.23 开一个专栏,金融人工智能,设计深度学习,智能体交易,平台api接口等学习内容
  9. 郑东新区龙岗小学师生赴中医药文化体验馆体验学习
  10. 案例:pandas添加汇总行、汇总列