文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python文件的操作

2023-01-31 01:08

关注

首先看看在pycharm输入文件句柄,怎样显示他的定义

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

print(type(f), f) # f文件句柄是属于一个类叫<class '_io.TextIOWrapper'>,也是可迭代对象。(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.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今晚吃鸡‘
'''

'''
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+模式不可添加文件
'''

#

'''
Duminjun is swimming # 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?’ 试试这几种方法的效果

'''
Traceback (most recent call last):
f.write('\nLaura is a playing tennis,What are you dong?')
io.UnsupportedOperation: not writable # f这个实例化对象中没有可读这一属性
'''

'''

Laura is a playing tennis,What are you dong?s swimming
今晚吃鸡 # 添加的内容已经插入到了最前面,r+模式可以写入文件,但是进入文件句柄时光标在最前面
'''

'''
Duminjun is swimming
今晚吃鸡
Laura is a playing tennis,What are you dong?
'''

'''

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

#

'''
Duminjun is swimming
今晚吃鸡
Laura is a playing tennis,What are you dong? # 已经成功到文末
'''

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)))

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯