Python:数据文件的打开模式和操作方法

来源:互联网 发布:网络电视32寸多少钱 编辑:程序博客网 时间:2024/05/16 06:11

对数据文件的操作是Python的内置模块,只要使用open函数,根据文件的打开模式,获取到文件的句柄,就可以对文件进行读、写、追加操作。语法形式如下:

方式一:fp = open(“文件名”,“文件打开模式”)

方式二:with open("文件名") as fp:

如果打开了文件之后就不再处理该文件了,那么使用with语句可以使程序编写得更为简洁,离开with之后,系统自动会关闭文件相关的内容,就不需要主动使用fp.close()了。

  • 文件名:可以是用绝对路径表示的文件名称,也可以是当前文件夹下的文件名称。
  • 文件打开模式:
    r  以读取模式打开
    w     以写入模式打开,删除原有的内容
    a     以追加模式打开 ,不会删除原有的内容,而是把后来的内容附加到原有的内容之后
    r+     以读写模式打开
    w+     以可写加上可读操作 
    a+     以追加方式加上读操作 
    rb     以二进制读取模式打开
    wb     以二进制写入模式打开
    ab     以二进制追加模式打开
    rb+    以二进制读写模式打开
    wb+    以二进制读写模式打开
    ab+    以二进制读写模式打开
  • fp: 打开文件的句柄,对文件的操作就是对文件句柄的操作,有以下操作方法:
    fp.read([size])                     size为读取的长度,以byte为单位
    fp.readline([size])           读一行,如果定义了size,有可能返回的只是一行的一部分
    fp.readlines([size])         把文件每一行作为一个list的一个成员,并返回这个list。
                                              其实它的内部是通过循环调用readline()来实现的。
                                              如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
    fp.write(str)                       把str写到文件中,write()并不会在str后加上一个换行符
    fp.writelines(seq)            把seq的内容全部写到文件中(多行一次性写入)。
                                               这个函数也只是忠实地写入,不会在每行后面加上任何东西。
    fp.close()                           关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,
                                                最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError
    fp.flush()                              把缓冲区的内容写入硬盘
    fp.fileno()                                返回一个长整型的”文件标签“
    fp.isatty()                                文件是否是一个终端设备文件(unix系统中的)
    fp.tell()                                   返回文件操作标记的当前位置,以文件的开头为原点
    fp.next()                     返回下一行,并将文件操作标记位移到下一行。
                                        把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
    fp.seek(offset[,whence]) 将文件打操作标记移到offset的位置。
                                              这个offset一般是相对于文件的开头来计算的,一般为正数。
                                               但如果提供了whence参数就不一定了。
                                                whence可以为0表示从头开始计算。
                                                                       1表示以当前位置为原点计算。
                                                                        2表示以文件末尾为原点进行计算。
                                                   需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
    fp.truncate([size])           把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。
                                                 如果size比文件的大小还要大,依据系统的不同可能是不改变文件,
                                               也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
在大部分的应用中,都是以文本文件的方式来存取文件的内容,也就是以字符串的类型操作文件的内容。看示例。

1、给出两个文本文件:

  • 春晓.txt:《春晓》春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。


  • drawOfSpring.txt:      
          Dawn of Spring
    I wake up at the dawn of Spring, 
    And hear the birds ev'rywhere sing. 
    As sounded the wind and rain o'ernight, 
    I wonder how many blooms alight.

2、执行如下程序:
fp = open("春晓.txt","r+")spring = fp.readlines()#fp.close()i=1print("-----------诗词翻译:方式一-----------")for statement in spring:    print("line {}: {}".format(i,statement),end="")    i +=1print()files = []with open('dawnOfSpring.txt') as fpoint:    files = fpoint.readlines()i=1print("-----------诗词翻译:方式二-----------")for statement in files:    fp.write(statement)    print("line {}: {}".format(i,statement),end="")    i +=1fp.close()

3、执行后,显示的结果如下:
-----------诗词翻译:方式一-----------line 1: 《春晓》line 2: line 3: 春眠不觉晓,处处闻啼鸟。line 4: 夜来风雨声,花落知多少。 line 5:       -----------诗词翻译:方式二-----------line 1:  line 2:       Dawn of Springline 3: I wake up at the dawn of Spring, line 4: And hear the birds ev'rywhere sing. line 5: As sounded the wind and rain o'ernight, line 6: I wonder how many blooms alight.Process finished with exit code 0
4、用文本编辑器打开“春晓.txt”文件,结果是这样子的:

《春晓》


春眠不觉晓,处处闻啼鸟。
夜来风雨声,花落知多少。
       
      Dawn of Spring
I wake up at the dawn of Spring, 
And hear the birds ev'rywhere sing. 
As sounded the wind and rain o'ernight, 
I wonder how many blooms alight.


0 0
原创粉丝点击