python中的文件处理

引言

   我们学习编程就是为了自动化办公,因此用代码操作文件很重要今天来讲点文件处理操作。

字符编码实际应用

1. 编码与解码
	编码
    	将人类能够读懂的字符编码成计算机能够直接读懂的字符
	解码
    	将计算机能够直接读懂的字符解码成人类能够读懂的字符
    s1 = '我是你爸爸,叫爸爸快'
    res = s1.encode('gbk')
    print(res)  # b'\xce\xd2\xca\xc7\xc4\xe3\xb0\xd6\xb0\xd6\xa3\xac\xbd\xd0\xb0\xd6\xb0\xd6\xbf\xec'
    '''
    字符串前面的b是表示该数据类型为 bytes类型
    bytes类型可以看成二进制
    '''
    print(res.decode('gbk'))  # '我是你爸爸,叫爸爸快'
    '''
    基于网络传输数据 数据都必须是二进制格式
    因此肯定要涉及到编码与解码
    '''
2. 如果出现了乱码就应该让数据当初以什么编码编的就以什么编码解。记住了gbk的编码不能用shift_JIS和utf8的编码来解码,会报错,他们的进制数不同不能互相解码。
3. python解释器层面
	python2解释器默认的编码是ASCII码
    	1. 文件头:必须写在文件的最上方,告诉解释器使用指定的编码
            # coding:utf8
            # -*- coding:utf8 -*-  美化写法
        2. 字符前缀:在使用python2解释器的环境下定义字符串习惯再前面加u 
	python3解释器默认的编码是utf8

文件操作简介

文件是操作系统暴露给用户可以直接操作硬盘的快捷方式
# 代码操作文件的流程
	1.打开文件、创建文件
    2.编辑文件内容
    3.保存文件内容
    4.关闭文件

# 基本语法结构
	结构1(了解即可):
        f1 = open()  # 打开文件
        f1.close()  # 关闭文件
     结构2(推荐使用):
        with open() as f:
            pass
# 使用关键字打开文件
'''
写路径为了防止转义,直接在字符串的引号外面加个r
'''    
with open(r'D:\py1\day09\a.txt', 'r', encoding='utf8') as f:
    pass
'''
上述代码不用写close,因为子代码执行完毕会自动关闭文件
pass和...都是不全语法结构,本身没功能
open(文件的路径,文件的操作模式,文件的编码)
	1. 文件的路径是必须要写的
	2. 文件的操作模式、文件的编码有时候不用写
'''

文件的读写模式

r read 只读,写会报错
w write 只写,读会报错,且文件不存在就新建一个文件,文件存在会先清空文件内容
a append 只追加,读会报错,在文件末尾添加内容,文件不存在新建文件
with open(r'a.txt','r',encoding='utf8') as f1:
    print(f1.read())  # 一次性读取文件所有内容
    f1.write('dasdajk')  # 报错,只读
'''
如果不明确可以用方法readable看是否具有读的能力
writable看是否有写的能力
'''

文件的操作模式

t模式
	文本模式 是默认的模式
    	r	rt
        w	wt
        a	at
     1.该模式只能操作做文本文件
     2.该模式必须要指定encoding参数
     3.该模式读写都是以字符串为最小单位
 b模式
	二进制模式 可以操作任意类型的文件
    	rb  不能省略b
        wb  不能省略b
        ab  不能省略b
     1.该模式可以操作任意类型的文件
     2.该模式不需要指定encoding参数
     3.该模式读写都是以bytes类型为最小单位

文件内置方法

read()  # 一次性读取文件内容
	1.执行完之后光标在文件末尾 继续读取没有内容
    2.当文件内容特别大的时候 容易造成内存溢出(满了)
readline()  # 一次只读一行内容
readlines()  # 结果是一个列表 里面的各个元素是文件的一行行内容
readable()  # 判断当前文件是否可读
支持for循环  # 一行行读取文件内容(推荐使用)  内存中同一时刻只会有一行内容
write()  # 写入文件内容(字符串或者bytes类型)
writelines()  # 可以将列表中多个元素写入文件
writable()  # 判断文件是否可写
flush()  # 相当于主动按了ctrl+s(保存)
posted @ 2022-03-14 17:15  小金同学要加油  阅读(116)  评论(0)    收藏  举报