当前位置:   article > 正文

python文件操作_python f.readlines()

python f.readlines()

python文件操作

文件的基本概念

什么是文件

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

两种重要的文件类型

文本文件(Text File

文本文件是可直接阅读的,使用记事本打开即可看到文件的内容。

二进制文件(Binary File)

这类文件将数据按照它的进制编码的形式存储。如BMP,由 于这类文件内容是二进制编码,使用记事本打开是显然是乱码,BMP可用图片查看器解码

文本文件和二进制文件的优缺点

  • 无论什么类型的文件,在硬盘/内存=> 二进制

  • 文本方式读:内存->看(转换)

  • 二进制方式读: 内存-> 看到一致

python3 字符串类型

  • bytes bytes --->b abc' 表示二进制

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

  • str

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

注意:encode编码时可指定任何合适的编码方式,但decode解码时,一定需要对应的编码方式

文件的缓冲机制

  • 读操作:不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据

  • 写操作:不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘

文件缓冲区

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

缓冲机制的好处

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

文件的基本操作

访问文件操作过程

  1. 打开文件

  2. 读取文件

    • 将信息读到内存

  3. 写入文件

  4. 关闭文件

    • 保存文件并释放内存空间

常见编码

  • ASCII ---常见英文字符

  • Unicode ---万国码 只是给你一个编号,比如中文一个字在Unicode里面占两个字节但是在UTF - 8中占三个字节

  • UTF - 8 GBK ---是Unicode编码的具体实现方式,决定他在内存s中怎么去存储

  • UTF - 8 一个中文字符占三个字节

  • GBK国标码 ---一个中文占两个字节

>>> "中".encode("utf-8")
b'\xe4\xb8\xad'
>>> "中".encode("gbk")
b'\xd6\xd0'

判断文件编码-chardet模块

import chardet
str = "python".encode('gbk')
result = chardet.detect(str)
print(result)
输出:
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
#encoding的值显示为ascii,表示编码是ascii编码,由于gbk是属于ascii编码的一种,所以encoding的值就为ascii,后面的confidence是检测率,language是语言
​
#以什么方式加码就要以什么方式解码,不然会失败
>>> "中".encode("gbk").decode("gbk")
'中'
>>> "中".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
​
  • python2和python3的不同

    • python2的编码是ASCII码

    • python3的默认编码是UTF - 8

打开文件(open)

格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  • file 要打开的文件名或路径

  • mode 打开文件的方式 => text, bytes

  • encoding 文件的编码方式

  • errors: 当发生编码错误时的处理方式

    • 'ignore'或'strict'(默认

  • buffering 缓存方式

文件的打开

  1. 读(r)

  2. 写(w)

    • 覆盖写,没有的话会新建文件

  3. 追加写(a)

    • 没有的话会新建文件

  4. 新建写入(x)

    • 文件如果有了的话会报错

  5. 带加号就是读写的方式r+,w+,a+

文件打开类型

文本类型\二进制类型

默认是以只读方式文本类型打开常见编码

文件的读取

  1. fp.read()

    • 只会从光标的位置开始读,读了一遍之后光标到最后,在读的话就都读不到内容

    • read读的字符数

  2. seek(偏移量,位置)

    • 定位光标位置,按照字节来的

    • 移动光标的位置,有两个参数,0表示开头,1表示当前2表示末尾,1和2只能在二进制条件下使用

  3. fp.readline()

    • 每一次读一行,无参数

    • 从光标位置读到行末

  4. fp.readlines()

    • 从光标位置读到文件末尾,把每一行作为一个元素存入列表,可以有参数

  5. fp.tell() 告诉你光标现在在哪个字节

for i in fp: 循环读取文件fp内的内容, 每次只读一行数据
fp.read(60000)  每次读60000个字符
fp.readlines(60000)  每次读60000个字符所在的所有行

文件的写入

f.write( )

fp.write 返回字符数,不是字节数

为什么不实时写入磁盘

硬盘是慢设备,频率读写会增大磁盘压力,产生瓶颈

什么时候真正写入磁盘

  1. 缓冲区满了

  2. 进程关闭

  3. 强制刷新 flush

    • fp.flush()强制将缓存中的数据刷新到磁盘中去

  4. 文件关闭 close

文件的关闭

f.close()

用with语句打开

#with 语句管理 with语句体中的内容执行结束可以自动释放与fp的链接
with open("sing","r") as fp:
    for i in fp:

文件对象其他方法

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/499862
推荐阅读
相关标签
  

闽ICP备14008679号