python 基础知识6-文件操作
Posted 寂*凉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 基础知识6-文件操作相关的知识,希望对你有一定的参考价值。
1、只读文件
#以文本打开文件‘r‘ f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r‘,encoding=‘utf-8‘) content = f.read() print(content) f.close()#中国是个伟大的国家。 #以二进制形式打开文件‘rb‘ f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘rb‘) content = f.read() print(content) f.close()#b‘xe4xb8xadxe5x9bxbdxe6x98xafxe4xb8xaaxe4xbcx9fxe5xa4xa7xe7x9ax84xe5x9bxbdxe5xaexb6xe3x80x82‘ ‘‘‘ ‘C:\Users\Administrator\Desktop\Python\f.txt‘:路径(不能用‘‘!可以用‘\‘或‘/‘) mode:定义操作方式. encoding:声明,此次打开文件使用什么编码本。一般来说:你的文件用什么编码保存的,就用什么方法打开,一般都是用utf-8(有些使用的是gbk). f.read():操作文件,比如读文件,给文件写内容,等等,都必须通过文件句柄进行操作. f.close():关闭文件. ‘‘‘
2、只写文件
#对于w:没有此文件就会创建文件。 f = open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode = ‘w‘,encoding= ‘utf-8‘) f.write(‘寂*凉‘) f.close()#寂*凉 #若有此文件,先将源文件全部清除,再写。 f = open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode = ‘w‘,encoding= ‘utf-8‘) f.write(‘5月9号‘) f.close()#5月9号
#wb:以二进制写入,需用encode()转换
f = open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode = ‘wb‘)
f.write(‘5月9号‘.encode(‘utf-8‘))
f.close()
#‘a‘:追加写
f = open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode = ‘a‘,encoding= ‘utf-8‘)
f.write(‘21度‘)
f.close()#5月9号21度
#‘ab‘:以二进制追加写
f = open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode = ‘ab‘)
f.write(‘适中‘.encode(‘utf-8‘))
f.close()#5月9号21度适中
3、读写
#‘r+‘读写 f = open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode = ‘r+‘,encoding =‘utf-8‘) print(f.read())#5月9号21度适中 f.write(‘5月9日‘) f.close() 注意:如果在读写模式下,先写后读,那么文件就会出问题,因为默认光标是在文件的最开始,要是先写,则写入的内容会讲原内容覆盖掉,直到覆盖到写完的内容,然后在后面开始读取。
4、光标控制:seek
seek(n)光标移动到n位置,注意: 移动单位是byte,所有如果是utf-8的中文部分要是3的倍数
移动到开头:seek(0)
移动到结尾:seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾
f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘) f.seek(0) # 光标移动到开头 content = f.read()# 读取内容, 此时光标移动到结尾 print(content)#中国是个伟大的国家。 f.seek(0) # 再次将光标移动到开头 f.seek(0,2) # 将光标移动到结尾 content1 = f.read()# 读取内容. 什么都没有 print(content1)# f.seek(0) f.write(‘确实‘) content2 = f.read()# 写入信息. 此时光标在6 中文2 * 3个 = 6 print(content2)#是个伟大的国家。 f.close()
5、功能详解
#(确实是个伟大的国家。) #read(n):读出的字符数 f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘) content = f.read(3) print(content)#确实是 f.close() #seek(n):按照字节定光标的位置 f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘)#(确实是个伟大的国家。) f.seek(3) content = f.read() print(content)#实是个伟大的国家。 f.close() #tell():获取当前光标的位置 # f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘) f.seek(3) print(f.tell())#3 f.close() f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘a+‘,encoding=‘utf-8‘) f.write(‘真的‘) count = f.tell() f.seek(count-6) print(f.read())#真的 f.close() #readline:一行一行读 f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘) print(f.readline()) f.close() #readlines:每一行当成列表中的一个元素,添加到list中 f = open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘) count = f.readlines() for i in count: print(i.strip()) f.close()
6、打开文件另一种方式with open
优点:(1):用with上下文管理这种方式,它会自动关闭文件句柄。
(2):一个with 语句可以操作多个文件,产生多个文件句柄。
with open(‘C:\Users\Administrator\Desktop\Python\f.txt‘,mode=‘r+‘,encoding=‘utf-8‘) as f, open(‘C:\Users\Administrator\Desktop\Python\t.txt‘,mode=‘r+‘,encoding=‘utf-8‘) as f1: print(f.read()) print(f1.read())
以上是关于python 基础知识6-文件操作的主要内容,如果未能解决你的问题,请参考以下文章
[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段