目录

什么是文件?

文件概念:

文件类型:

加码解码

文件的基本操作

        打开文件 open()

        判断文件编码-chardet模块

         打开方式-mode

        读取文件fp.read()

        关闭文件 fp.close()

        光标位置

         写入文件fp.write()


什么是文件?

文件概念:

:文件是存放在外部介质 (如硬盘、U盘) 上的一组完整信息的集合。这些信息可为各种文字、

图形、图像、电影、音乐,甚至包括病毒程序等。

文件类型:

        文本文件  --》可直接阅读,我们使用记事本打开即可看到文件内容。

        二进制文件 --》文件按照进制编码的形式存储,属于二进制编码,图片即是。

#无论什么类型的文件,在硬盘/内存中都是以二进制的形式存储。

#计算能识别的是二进制,二进制就是机器语言,文字是人类语言。

#编码是人类语言与机器语言的一种映射关系。

#ascii码 --》对英文字符进行编码的一种规则

#unicode编码 --》万国码 --》基本上所有文字都给一个编码

#python2中默认编码为ascii码,python3中默认编码为utf-8

#utf-8 utf-16 utf-32 gbk都是unicode具体实现方式

加码解码

python识别文件类型 python如何区分文件类型_开发语言

 我们可以使用ord()来获取单个字符的ascii值

ord(c, /)
    Return the Unicode code point for a one-character string.

python识别文件类型 python如何区分文件类型_后端_02


 使用encode来获取对应的编码,即加码

python识别文件类型 python如何区分文件类型_开发语言_03

 #可以看出utf-8编码一个中文字符占了3个字节,而gbk编码一个中文字符只占了2个字节。

我们使用decode来解码

python识别文件类型 python如何区分文件类型_python识别文件类型_04

 #加码可以使用任何形式,但解码必须使用相同格式才行。

文件的基本操作

        打开文件 open()

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
#file 要打开的文件名
#mode 打开文件的方式,是可读还是可写,还是可读可写等
#encoding 文件编码方式
#buffering 缓存方式(int)

        判断文件编码-chardet模块

        安装:pip install chardet

python识别文件类型 python如何区分文件类型_缓存_05

         打开方式-mode

#默认打开方式为只读
# r 只读,文件不存在时报错
# w 覆盖写
# x 创建新文件并写入,文件存在时报错
# a 在文件后面追加内容
# b 二进制模式 rb配合使用
# t 文本模式 tr使用
# + 可读写

        读取文件fp.read()


# fp.read() 返回当前光标位置到文末。添加参数为从当前位置读到参数位置# fp.readline() 返回光标当前行的文本,添加参数为当前行到参数位置# fp.readlines() 返回当前光标到文末的内容,作为一个列表返回,每行为一个元素


        关闭文件 fp.close()

        用 with语句打开,文件在使用完后自动释放

        with open(file,'r') as fp:

                fp.read()

        光标位置

        fp.tell() 获取光标位置

python识别文件类型 python如何区分文件类型_开发语言_06

        fp.seek() 移动光标 

python识别文件类型 python如何区分文件类型_开发语言_07

         写入文件fp.write()

python识别文件类型 python如何区分文件类型_python_08

# 我写入了文件,但是在文件中并没有出现内容,这是因为write()操作不会实时写入磁盘,而是将数据放在缓存中,因为程序运行在内存中,内存与磁盘的数据交互速度缓慢且不方便,所以设置了一块缓存区域,内存可以在缓存中获得需要的数据,而不需去磁盘中寻找,内存也可以将数据保存在缓存中,最后通过fp.close()或者fp.flush()来将数据刷到磁盘中

python识别文件类型 python如何区分文件类型_缓存_09

 我们可以通过修改open()操作中的buffering来实现多种写入磁盘的方式

python识别文件类型 python如何区分文件类型_python_10

 

python识别文件类型 python如何区分文件类型_python识别文件类型_11

我们修改buffering值为1实现换行即落盘 ,再未输入换行符之前,所有的数据都在缓存中。

python识别文件类型 python如何区分文件类型_开发语言_12

 

python识别文件类型 python如何区分文件类型_python_13

  文件中的数据修改了

我们修改buffering=2 并写入2*4096个a字符

python识别文件类型 python如何区分文件类型_后端_14

 再写入一个a,文件自动落盘了

python识别文件类型 python如何区分文件类型_缓存_15