你好,我是goldsunC
让我们一起进步吧!
1. 文件说明
文件是存储在存储器上的数据序列,在计算机中,所有文件都是以二进制的方式进行存储的,而文件的展示形式一般分为两种:文本形式和二进制形式。文本文件
由单一特定编码组成的文件,如utf-8编码。二进制文件
直接由比特0和1组成的文件,没有统一字符编码。在二进制文件中,0和1一般根据==预定义==的格式进行了结构组织,这种结构也就是文件的格式,结构的不同也就代表了文件格式的不同。例如.png,.avi等文件。无论是文本文件还是二进制文件,在计算机中都是以二进制方式进行存储的,而有统一编码的我们称其为文本文件,没有统一编码的我们称其为二进制文件。不过对于任何类型的文件,我们都可以用二进制的方法进行打开。2. 文件处理的一般步骤
当我们拿到一个文件时,处理步骤一般分为三步:- 1.打开
- 2.操作
- 3.关闭
    # 以文本形式打开文件
>>>    tfile = open("file.txt","rt")
    # 以二进制形式打开文件
>>> bfile = open("file.txt","rb")
    # 关闭文件
>>> tfile.close()
>>> bfile.close()
open(,)和close()来进行转换,对open函数来讲,示例中的两个参数第一个代表文件的路径和名称,当省去路径时必须保证文件和脚本在同一目录下,第二个参数决定了你对文件打开的方式,如rt代表以只读的文本形式打开,rb代表以只读的二进制形式打开,这在后文中将会有详细介绍。文件的打开
如上文所讲,文件的打开只需要用到open(,)函数,下面给出这个函数的用法。格式如下:
 = open( 文件路径及名称 , 打开模式 )句柄名称即是后续对文件处理的对象,而文件路径及名称上文以及提过,而打开模式跟我们后续处理文件的方法息息相关,简单来说我们想怎么处理文件最好选择相应的打开方法。Python提供了七种相关的打开模式,分别如下:| 打开模式 | 作用 | 
|---|---|
| 'r' | 只读模式,程序的默认值,如果文件不存在,返回FileNotFoundError类型错误。 | 
| 'w' | 覆盖写模式,文件若不存在则自动创建一个文件,如果文件存在则将其覆盖。 | 
| 'x' | 创建写模式,文件若不存在则创建文件,如果文件存在将返回FileExistsError类型错误。 | 
| 'a' | 追加写模式,文件若不存在则创建文件,如果文件存在则将内容写入到原文件的后边。 | 
| 'b' | 以二进制类型打开文件。 | 
| 't' | 以文本类型打开文件,此为默认值。 | 
| '+' | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能。 | 
文件的关闭
文件的关闭非常简单,格式如下: . close()文件内容的读取
在对文件内容进行读取时首先要保证文件以及被打开,而对于读取方法,Python提供了三个针对文件读取的函数:
| 读取方法 | 作用 | 
|---|---|
| .read(size=-1) | 读入全部内容,如果给出参数,则读入前size长度 | 
| .readline(size=-1) | 读入一行内容,如果给出参数,则读入该行的前size长度 | 
| .readlines(hint=-1) | 读入文件的所有行,以每行为元素形成列表,如果给出参数,则读入前hint行 | 
数据的文件写入
对文件内容的读取来讲,我们是将文件中的内容读取出来然后进行我们的操作,不影响原文件,而对文件内容的写入来讲,是我们之间在文件上进行操作,不过要注意对文件以写方式打开。
Python也提供了三个针对文件写入的函数:
| 写入方法 | 作用 | 
|---|---|
| .write(s) | 向文件写入一个字符串或者字节流 | 
| .writelines(lines) | 将一个元素全为字符串的列表写入文件 | 
| .seek(offset) | 改变当前文件操作指针的位置, offset参数:0、1、2分别代表文件开头、当前位置、文件结尾。 | 
seek函数,它的作用是改变当前文件操作指针的位置,它的用处是什么呢?举个小例子:    #首先以文本状态和覆盖写模式打开一个文件
>>>    newfile =   open('a_flie.txt','wb+')    
    #建立一个列表
>>>    a_list  =   ['Keep calm',' and ','carry on',' !']
>>>    newfile.writelines(a_list)
>>>    for line in newfile:
        print(line)
>>>    newfile.close()
这段代码在运行之后会生成一个'a_file.txt'文件,里边写着'Keep calm and carry on !',
而在解释器中却并没有打印这个字符串,这是因为在文件写入完成后,指针位置在文件的最后方,
而'for in'的遍历方法是从指针位置向文件最后方遍历,因此遍历的结果是空,这个时候如果想要
使用遍历的方法打印写入的字符串,就需要用到'seek'函数,如下:
#首先以文本状态和覆盖写模式打开一个文件 • end • 
走在路上
goldsunC
