python —— 文件操作--1

目录

##文件的基本类型##

一、什么是文件?

二、俩种重要的文件类型

三、文本文件与二进制文件的优缺点

四、字符的编码

Ⅰ、Unicode 万国码

指定字符串str1进行编码时采用utf-8进行编码

Ⅱ、ASCII码

Ⅲ、GBK编码

五、 python3中的字符串类型

六、文件的缓冲机制

文件缓冲区

缓冲机制的好处

##文件的基本操作##

Ⅰ、访问文件操作过程

Ⅱ、、文件打开 --》open




##文件的基本类型##

一、什么是文件?

        文件是存放在外部介质 (如硬盘、U盘) 上的一组完整信息的集合。这些信息可为各种文字、
图形、图像、电影、音乐,甚至包括病毒程序等。

二、俩种重要的文件类型

        • 文本文件(Text File) 。文本文件是可直接阅读的,使用记事本打开即可看到文件的内
        容。
        • 二进制文件(Binary File) 。这类文件将数据按照它的进制编码的形式存储。如BMP。由
        于这类文件内容是二进制编码,使用记事本打开是显然是乱码,BMP可用图片查看器解
        码。

三、文本文件与二进制文件的优缺点

文件读取类型优点缺点
文本
输出内容友好,不需要手动转换 一个字符占一个字节,文件占用的存储空间 较多, 读写时需要转换(内存->显示)
一个字符占一个字节 (一个字符占一个字节。不正确,英文是,但中文不是。得看编码方式) ,文件占用的存储空间 较多, 读写时需要转换(内存->显示) , 访问的时效率不高
二进制
二进制文件中的数据与数据的内存中的 表现形式一致。二进制文件在存储数据 时非常紧凑, 占用存储空间较少 ;在 读 写时不需要进行转换 ,具有较高的时间
效率
二进制文件 无法直接以字符形式输出 ,必须 要经过一个转换过程

无论什么文件在内存或者硬盘都是以二进制的形式存储的

对于计算机而言:         * 文本方式读:内存->看(转换)
                                     * 二进制方式读: 内存-> 看到一致

四、字符的编码

编码:就是人类语言跟机器语言的一种映射关系    不同的编码方式文件大小是不一样的,因为存在内存里占用的空间地址不同

Ⅰ、Unicode 万国码

1.   如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。
在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容。
2.具体实现方式:utf-8 utf-18 utf-32
utf-8  可变长编码方式
一个英文字符占用一个字节
中文一般占三个字节,有的特殊的占四个字节
>>> str1 ="中"
>>> str1.encode("utf-8")
b'\xe4\xb8\xad'
>>> str2.encode("utf-8")
b'ab'
>>>

指定字符串str1进行编码时采用utf-8进行编码

>>> str1 = "中"
>>> str1.encode("utf-8")
b'\xe4\xb8\xad'
>>> bin(0xe4)
'0b11100100'
>>> bin(0xb8)
'0b10111000'
>>>​

Ⅱ、ASCII码

ASCII 编码一览表(淡黄色背景为控制字符,白色背景为可显示字符)

 


>>> ord("a")
97
>>> ord("A")
65
>>> ord("中")
20013
>>> ord(":")
65306
>>>>>> bin(65306)
'0b1111111100011010'
>>> bin(20013)
'0b100111000101101'
>>> int(0b01001110)
78
>>> int(0b0100111000101101)
20013
>>>

python: 查看ascii码:ord("a")

Ⅲ、GBK编码

    1.是指中国的中文字符,其它它包含了简体中文与繁体中文字符,
另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符。 UTF-8编码:
它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码。
    2.GBK编码采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,
共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,
图形符号883个。
>>> str2 = "中文"
>>> str2.encode("utf-8")
b'\xe4\xb8\xad\xe6\x96\x87'
>>> str2.encode("gbk")
b'\xd6\xd0\xce\xc4'
>>> str2 = "a"
>>> str2.encode("gbk")
b'a'

五、 python3中的字符串类型

• bytes 转换:bytes->str : decode('utf8')
• str 转换: str->bytes: encode('utf8')

       乱码:

1.以什么方式加码,就得以什么方式解码 
2.文件打开出现乱码,一般是加码方式跟解码方式不一致
>>> str1.encode("gbk").decode("utf-8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte
>>> str1.encode("gbk").decode("gbk")
'中'
>>>

六、文件的缓冲机制

        读操作:不会直接对磁盘进行读取,而是 先打开数据流 ,将磁盘上的文件信息 拷贝到缓冲区 内,然后 程序再 从缓冲区中读取 所需数据
        写操作:不会马上写入磁盘中,而是 先写入缓冲区 ,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘

文件缓冲区

        计算机系统为要处理的文件 在内存中单独开辟出来的一个存储区间 ,在读写该文件时,做为数据交换的 临时“存储中转站”。

缓冲机制的好处

        能够有效地减少对外部设备的频繁访问,减少内存与外设间的数据交换,填补内、外设备的速度差异,提高数据读写的 效率

##文件的基本操作##

Ⅰ、访问文件操作过程

打开文件
读取文件
将信息读到内存
写入文件
关闭文件
保存文件并释放内存空间

Ⅱ、、文件打开 --》open

指定不同编码方式打开文件
 默认编码打开方式为None,跟平台语音编码环境有关,平台是utf-8,这里就是utf-8
 使用指定参数encoding 可以修改编码方式

1.windows utf-8 与linux utf-8文本

linux:
>>> fp  = open("utf.txt")
>>> fp.read()
"'中文'\naaa\nbbb\nccc\n\n"

window:
>>> fp.read()
'中文\naaaInbbb ncccln'
>>>fp =open("win-utf.txt")
>>> fp.read()
Traceback(most recent call last):
File " <stdin> ",line 1,in <module>
File"/usr/lib64/python3.6/codecs.py",line 321 ,in decode
(result,consumed)= self. buffer decode(data,self.errors, final)
UhnicodeDecodeError:'utf-8'code can't decode byte Oxd6 in position 7:invalid continu
>>>fp = open("win-gbk.txt",encode = "gbk")
Traceback(most recent call last):
File"<stdin>".line 1,in <module>
TypeEror:'encode'is an invalid keyword arg ument for this function
>>>fp = open("win-gbk.txt",encoding="gbk")
>>>fp.read()
window 中文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值