zoukankan      html  css  js  c++  java
  • python中的文件操作: 包括文件的打开方式和文件的修改

    python 文件操作:

    文件一般分为文本文件和二进制文件。

    文本文件:

    由单一特定编码组成的文件,如UTF-8编码

    由于存在编码,也被看成是存储着的长字符串

    适用于例如:.txt文件、.py文件等

    二进制文件:

    直接由比特0和1组成,没有统一字符编码

    一般存在二进制0和1的组织结构,即文件格式

    适用于例如:.png文件、.avi文件等

    正常的文件操作都分三步走:

    打开文件
    操作文件
    关闭文件

    # 1. 打开文件,得到文件句柄并赋值给一个变量
    f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r
    
    #2. 通过句柄对文件进行操作
    data=f.read()
    
    #3. 关闭文件
    f.close()

    文件的打开模式:

    variety meaning
    'r' 只读模式,默认值,如果文件不存在,返回输出异常
    'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
    'x' 创建写模式,文件不存在则创建,存在则返回FileExistsError
    ‘a’ 追加写模式,文件不存在则创建,存在则在文件最后追加内容
    ‘b’ 二进制文件模式
    ‘t’ 文本文件模式,默认值
    ‘+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能

     

     

     

     

     

     

     

     

     

     

     

     

     

    #1. 打开文件的模式有(默认为文本模式):
    r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    w,只写模式【不可读;不存在则创建;存在则清空内容】
    a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】
    
    #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作
    (而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、
    图片文件的jgp格式、视频文件的avi格式)
    rb wb ab 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

    文件内容的读取:

    variety meaning
    f.read(size=-1) 读入全部内容,如果给出参数,读入前size长度
    f.readline(size=-1) 读入一行内容,如果给出参数,读入该行前size长度
    f.readlines(hint=-1) 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行
    f.write(s) 向文件写入一个字符串或字节流
    f.writelines(lines) 将一个元素全为字符串的列表写入文件
    f.seek(offset) 改变当前文件操作指针的位置,offset含义如下:0 – 文件开头; 1 – 当前位置; 2 – 文件结尾

     

     

     

     

     

     

     

     

     

     

     

     

     

    #掌握
    .read() #读取所有内容,光标移动到文件末尾 f.readline() #读取一行内容,光标移动到第二行首部 f.readlines() #读取每一行内容,存放于列表中 f.write('1111 222 ') #针对文本模式的写,需要自己写换行符 f.write('1111 222 '.encode('utf-8')) #针对b模式的写,需要自己写换行符 f.writelines(['333 ','444 ']) #文件模式 f.writelines([bytes('333 ',encoding='utf-8'),'444 '.encode('utf-8')]) #b模式

    python2中的file与open:

    #首先在python3中操作文件只有一种选择,那就是open()
    
    #而在python2中则有两种方式:file()与open()
    两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,
    但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,
    相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,
    我们一般使用open()打开文件进行操作,而用file当做一个类型,比如type(f) is file

    文件内光标的移动:

    # read(3):
    
    #  1. 文件打开方式为文本模式时,代表读取3个字符
    
    #  2. 文件打开方式为b模式时,代表读取3个字节
    
    #二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate
    
    #注意:
    
    #  1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,#都是以bytes为单位移动的
    
    #  2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式#打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果
    
    
    import time with open('test.txt','rb') as f: f.seek(
    0,2) while True: line=f.readline() if line: print(line.decode('utf-8')) else: time.sleep(0.2)

    文件的修改:

    一次读入,统一处理

    fo = open(fname,"r")
    txt = fo.read() 
    ...#对全文txt进行处理
    fo.close()

    按数量读入,逐步处理:

    fo = open(fname,"r")
    txt = fo.read(2)
    while txt != "":
        #对txt进行处理
        txt = fo.read(2)
    fo.close()

    一次读入,分行处理:

    fo = open(fname,"r")
    for line in fo.readlines():
        print(line)
    fo.close()

    分行读入,逐行处理:

    fo = open(fname,"r")
    for line in fo:
        print(line)
    fo.close()

    数据文件的写入:

    fo = open("output.txt","w+") 
    ls = ["China", "France", "America"]
    fo.writelines(ls)
    fo.seek(0)
    for line in fo:
        print(line)
    fo.close()
  • 相关阅读:
    Linux(Centos7)yum安装最新redis
    refresh table tablename ;MSCK REPAIR TABLE table_name;
    整个shuffle的流程图
    Vim简明教程
    centos vim 7.3 升级 + vim 简单配置文件
    Python——可变类型与不可变类型(即为什么函数默认参数要用元组而非列表)
    python——修饰符
    转——《将人性置之死地而后生》刘夙
    各学科领域入门书籍推荐
    python——关于Python Profilers性能分析器
  • 原文地址:https://www.cnblogs.com/sweet-i/p/11153626.html
Copyright © 2011-2022 走看看