周总结week——Three(文件操作)

周总结week——Three(文件操作)

文件操作

1、文件的概念

'''	
	操作系统为了让用户更好的使用计算机,从而创建的一个快捷方式,我们双击一个文件,就相当于,把硬盘中的数据资源加载到内存中,以供我们使用。
'''

2、打开文件的方法

'''
语法结构:
	变量名 = open('文件路径', '读写模式', encoding = '编码格式')
	对文件的操作
	变量名.close
'''
file_operate = open('a.txt', 'r', encoding='utf8')
print(file_operate.read())
file_operate.close()
'''
with 上下文管理

语法结构:
  with open('文件路径', '读写模式', encoding = '编码格式') as 变量名:
	  对文件的操作
	
with 上下文管理的好处:
	当with的子代码结束后,会自行调用close()方法,结束对文件的调用。
	支持同时操作多个文件

文件路径:在程序处于同一个文件夹下,可以之间文件名+文件后缀打开,如果不在同一个文件夹下,需要写绝对路径打开。
注意:
由于\在代码中有特殊含义,故在写绝对路径前使用 
'''
with open('a.txt', 'a', encoding='utf8') as file_operate:
    print(file_operate.write('HaiMan')) # 运行结果为3,真实效果为在文件末尾添加HaiMan

# with操作多个文件
with open('a.txt', 'a', encoding='utf8') as file_operate, \
        open ('b.txt', 'w', encoding='utf8') as file_write:
    print(file_operate.write('HaiMan')) # 运行结果为3,是传入数据的个数,真实效果为在文件末尾添加HaiMan
    print(file_write.write('Every one'))

3、文件读写模式

'''
'r': 只读:只能读不能写
'w':只写:只能写不能读
'a':只追加:文件末尾添加数据
'''

4、文件操作模式

'''
t	文本模式(rt、 wt、 at)
特点:
	1、只能操作文本文件
	2、读写都是以字符为单位
	3、需要指定encoding参数,如果不采用则使用计算机默认的编码

b	二进制模式(bytes模式)(rb、 wb、 ab)不是默认的模式,需要指定
特点:
	1、可以操作任何类型的文件
	2、读写都是以字节(bytes)为单位
	3、二进制模式、不需要指定编码参数
前面加b直接转为二进制、只有字母和数字
'''
 # b模式(rb、wb、ab)不用编码模式
with open('a.txt', 'rb') as file_read,\
     open('b.txt', 'wb') as file_write,\
     open('b.txt', 'ab') as file_append:
    print(file_read.read())
    print(file_write.write(b'come')) # b只能添加ASCII码里面有的东西,之外的不行
    print(file_append.write(b'abc')) # b只能添加ASCII码里面有的东西,之外的不行

5、编码、解码

'''
编码:
	res = '数据值'
	data = bytes(需要编码的变量名, '编码格式') #encode
解码:
	ret = 数据类型(需要解码的变量名,'')
'''
# 编码
string_encode = 'come'
data = bytes(string_encode, 'utf8')
print(data, type(data)) # b'come' <class 'bytes'>
# 解码
res = str(data)
print(res, type(res)) # b'come' <class 'str'>

6、 .reda()方法

'''
.reda()方法: (括号内可以填写数字,表示在文本模式下,读取多少个字符)
	一次性读取文件内容,光标从头读到我
	在同一次的操作在,可以多次读取
	文件内容过大时,可能会造成内存溢出
'''
with open('a.txt', 'r', encoding='utf8') as file_read:
    print(file_read.read())

7、for循环读取文件

'''
一行行的读取文件内容,避免内存溢出的现象
	语法格式:
		for 需要存储文件的变量名 in 读取文件的变量名:
			print(存储文件的变量名)
'''
with open('a.txt', 'r', encoding='utf8') as file_read:
    for line in file_read:
        print(line)

8、.readline()方法

'''
.readline()只能读取一行
.readlines()能读取整个文件,以列表的形式输出,包括换行符
	一次性读取所有文件内容,会根据行数,组成列表
	若给定sizeint > 0,返回综合大约为sizeint字节的行,实际读取值可能比sizeint较大,因为需要填充区。
	语法格式:
        文件变量名.readline()
        文件变量名.readlines()
'''
with open('b.txt', 'r', encoding='utf8') as file_read:
    print(file_read.readline())     # come de why
    
with open('b.txt', 'r', encoding='utf8') as file_read:
    # print(file_read.readline())     # come de why
    print(file_read.readlines())    # ['come de why\n', 'ABC\n']

9、不常用方法总结

'''
readable()方法
	判断文件是否具备读数据的能力,返回true和false
	
write()方法	
	将字符串写入文件,返回的是写入的字符长度。

writeable()方法
	判断文件是否具备写数据的能力true和false
	
writlines()方法
	向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

flush()方法
	刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
'''

10、光标移动

'''
语法结构:
	seek(offset, whence)  
	offset 是位移量,以字节为单位
	whence 是模式 有 0、1、2
	0是记忆文件开头,文本和二进制都可以使用
	1是基于当前位置,二进制模式可以使用
	2是基于文件末尾,二进制模式可以使用
'''
with open(r'a.txt','rb')as f:
    print(f.read())
    f.seek(0,0)
    print(f.read())
    f.seek(0,0)
    print(f.read())
    print(f.tell()) # 返回光标距离文件开头产生的字节数
posted @ 2022-10-16 22:10  负剑远游行归来仍少年  阅读(48)  评论(0)    收藏  举报