博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python:数据文件的打开模式和操作方法
阅读量:2225 次
发布时间:2019-05-09

本文共 2803 字,大约阅读时间需要 9 分钟。

对数据文件的操作是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.

转载地址:http://aolfb.baihongyu.com/

你可能感兴趣的文章
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>