python基础-第四篇-4.2文件操作
Posted 财经知识狂魔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础-第四篇-4.2文件操作相关的知识,希望对你有一定的参考价值。
基本打开模式
- 文件操作的流程:打开文件,操作文件,关闭文件
- 打开文件方法:open(文件名,模式,编码)
- file = open(‘文件名’) 模式在不给值的情况下,默认为只读,而且如果是非当前的目录下文件名要加绝对路径
‘r’--只读
- file_name.read() 一次性把指针后的内容全部读出来
- file_name.readlines() 把指针后内容,以列表的形式每行读出
f = open(\'ha.log\',\'r\') data1 = f.readlines() f.close() print(data1) #结果为:[\'that is good!\\n\', \'nice to meet you!\\n\', \'hello kitty!\\n\'] f = open(\'ha.log\',\'r\') f.seek(5) data2 = f.readlines() f.close() print(data2) #结果为:[\'is good!\\n\', \'nice to meet you!\\n\', \'hello kitty!\\n\']
- file_name.readline() 每一次读一行内容
- 文件里循环读取,循环文件默认是循环行内容
f = open(\'ha.log\',\'r\') for line in f: print(line) f.close() #结果为: that is good! nice to meet you! hello kitty!
\'r\'模式总结:只读模式在打开文件时是从头开始读,其中read()和readlines()是一次把文件所有内容都读取出来,在文件很大时,不建议这两种方法,非常占内存
而readline和循环文件是一行一行读,两次方法每次读取都是只占一行内容的内存,readline操作比较繁琐,并且你如果不知道最后一行在哪,一般容易报错,
一般用for循环
‘w’--只写
- 以只写模式打开时,先检测文件存不存在,不存在就创建,存在清空文件内容
- file_name.writelines() 和只读里的readlins相对应,以列表形式写入
f = open(\'ha.log\',\'w\') f.writelines([\'that is good!\\n\', \'nice to meet you!\\n\', \'hello kitty!\\n\']) f.close() f = open(\'ha.log\',\'r\') data = f.read() f.close() print(data) 结果为: that is good! nice to meet you! hello kitty!
‘w’模式总结:只写模式适用于创建不存在的文件,用于清空内容再写入内容情况比较少,如果说想在文件末尾添加内容,这就涉及到我们即将讲的‘a’模式
‘a’--追加模式
- 打开文件时,指针跳到文件的末尾,此时执行写操作就是内容添加操作
- 追加模式下不可读,不存在则创建,存在则追加
f = open(\'ha.log\',\'a\') print(f.tell()) f.write(\'大家好\') f.close() f = open(\'ha.log\',\'r\') data = f.read() f.close() print(data) 结果为: 48 that is good! nice to meet you! hello kitty! 大家好
‘x’--只写
- 不存在创建,存在则报错(这个模式py3新增的) --用于判断文件存不存在非常有用
字节打开模式
- 别看我们平时操作都是能看懂的字符串,其实在程序底部都是一些计算机能识别的二进制文件,所以让我们看懂,必须经过一个编码转换区,由字节转换为字符
\'rb\'--字节只读模式
\'wb\'--字节只写模式
文件操作指针
- file_name.seek() 指针拨到指定位置
- file_name.tell() 告诉你当前指针的位置
- r+ 读写--从0开始
- w+ 写读--写把文件清空,从0开始
- a+ 写读--指针从末尾开始
- x+ 写读--存在报错,从0开始
with open(\'ha.log\',\'w\') as f: f.writelines([\'大家好才是真的好\\n\',\'明天的太阳依旧灿烂\\n\']) #打开以a+模式,如果先写,是从当前指针开始往后覆盖内容 with open(\'ha.log\', \'r+\') as f: print(f.tell()) #0 f.write(\'早起的鸟儿有虫吃\\n\') f.seek(0) data3 = f.read() print(data3) # 结果为: # 早起的鸟儿有虫吃 # 明天的太阳依旧灿烂
文件上下文管理
- with open(’文件名‘,模式) as 文件变量:文件操作---------这种方式不用再写文件关闭了,因为这种方式在操作后会自动关闭文件
- 在py3还支持同时打开两个文件:with open(文件1,模式) as obj1,open(文件2,模式) as obj2:文件操作
大型文件复制:
with open(\'ha.log\',\'r\') as obj1,open(\'ha2.log\',\'w\') as obj2: for line in obj1: obj2.write(line) with open(\'ha2.log\',\'r\') as obj2: data = obj2.read() print(data)
文件操作常用方法拾遗
- file_name.flush() 强行把内存刷到硬盘
- file_name.truncate() 保留指针前的内容
with open(\'ha2.log\',\'a+\') as obj1: obj1.seek(6) obj1.truncate() obj1.seek(0) data = obj1.read() print(data) #结果为:大家好
欢迎大家对我的博客内容提出质疑和提问!谢谢
笔者:拍省先生
以上是关于python基础-第四篇-4.2文件操作的主要内容,如果未能解决你的问题,请参考以下文章