• Python文本处理


    对文本操作的流程:

    1. 打开文件,得到文件句柄并赋值给一个变量

    2. 通过句柄对文件进行操作

    3. 关闭文件

    open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

    name : 一个包含了你要访问的文件名称的字符串值。

    mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

    buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

    encoding:对文件规定打开的编码

    newline = “”:读取文件真正的换行符,在window里面为“ ”,Linux和Python里面为“ ”

    模式

    模式 描述
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    file对象

    序号 方法及描述
    1 file.close()
    关闭文件。关闭后文件不能再进行读写操作。
    2 file.flush()
    刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
    3 file.fileno()
    返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
    4 file.isatty()
    如果文件连接到一个终端设备返回 True,否则返回 False。
    5 file.next()
    返回文件下一行。
    6 file.read([size])
    从文件读取指定的字节数,如果未给定或为负则读取所有。
    7 file.readline([size])
    读取整行,包括 " " 字符。
    8 file.readlines([sizehint])
    读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
    9 file.seek(offset[, whence])
    设置文件当前位置
    10 file.tell()
    返回文件当前位置。
    11 file.truncate([size])
    截取文件,截取的字节通过size指定,默认为当前文件位置。
    12 file.write(str)
    将字符串写入文件,返回的是写入的字符长度。
    13 file.writelines(sequence)
    向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

    具体使用

    ###############只读模式的使用###############
    
    >>> f = open("C:/Users/DELL/Desktop/test.txt","r",encoding="GBK")
    >>> date = f.read()  ## 读出所有的文字
    >>> print(date)
    >>>date.close() ##每次都要close()储存
    Hello,World!
    
    >>>file_name = "C:/Users/DELL/Desktop/test.txt"
    >>>f = open(file_name, "r", encoding = "GBK")
    >>>print("First", f.readline())   ##  一列一列的显示文字
    >>>print("Second", f.readline())
    >>>print("Third", f.readline())
    >>>print("Forth", f.readline())
    First Hello,World!
    
    Second I love you!
    
    Third You are so beautiful!
    
    Forth HaaaaHaaa!
    
    >>>file_name = "C:/Users/DELL/Desktop/test.txt"
    >>>f = open(file_name, "r", encoding = "GBK")
    >>>print(f.readlines())   ##  把内容显示成列表
    ['Hello,World!
    ', 'I love you!
    ', 'You are so beautiful!
    ', 'HaaaaHaaa!
    ', 'Are you ok?
    ']
    
    ###############只读模式和追加模式的使用###############
    >>>f = open("test.txt", "w", encoding = "UTF-8") // f = open("test.txt", "a", encoding = "UTF-8")
    """在字符处理里面,w模式会再新建一个文件(会替代原来的文件)来写入内容,而a模式会添加内容,如果没有该文件就新建一个"""
    >>>print(f.readable())
    False          ##  在只写模式下打开的文件不能读
    >>>print(f.writable())
    True
    >>>f.write("I love you!")   
    11    ##  显示其字节数
    >>>f.flush()     ##  把内存里面的内容加载到磁盘里面
    >>>f.writelines(["I love you!
    ","You are so good!
    ","Thank you very much!
    "])   ## 用列表写入文字
    >>>f.close()
    
    >>>f = open(file_name, "r+", encoding = "GBK")  ##为读写模式,即可以写入也可以阅读
    
    >>>f=open('test.txt','rb') ## 以二进制的方式打开,不能指定编码
    >>>date = f.read()
    >>>print(date)
    b'xcexd2xcfxb2xbbxb6xc4xe3
    '
    >>>print(date.decode("gbk"))
    我喜欢你
    
    >>>f=open('test.txt','wb') // >>>f=open('test.txt','ab')  ##在这样模式下,写入内容必须先把内容编译成指定二进制
    >>>f.write(bytes("我爱你",encoding = "gbk"))    ## 用bytes方法
    6
    >>>f.flush()
    我爱你        
    
    >>>f.write("我爱你".encode("gbk"))  ##encode方法
    6
    >>>f.close()
    我爱你我爱你  
    
    ###################################################################################
    >>>f.closed #文件如果关闭则返回True
    >>>print(f.closed)
    True
    
    >>>f.tell() #查看文件处理当前的光标位置
    0
    #################
    fileObject.seek(offset[, whence])
    """可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起(必须使用b模式打开),2代表从文件末尾算起"""
    >>>f.seek(3) #从开头开始算,将光标移动到第三个字节
    3
    >>>print(f.tell())
    3
    >>>f.seek(3,1)
    6
    >>>f.seek(3,2)
    24
    >>>f.seek(-2,2)
    19
    
    >>>f.truncate(5) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外
    5
    >>>print(f.read())
    I lov
    

    with open方法

    with open( ) as variable

    这种方式打开的文件将不用使用close()或者flush(),刷入内容

    with open("test.txt", "r+") as f:
    	print(f.read())
    
  • 相关阅读:
    深入浅出 JVM ClassLoader
    JVM 线上故障排查基本操作
    深入浅出 JVM GC(3)
    MyBatis 源码分析系列文章合集
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析系列文章导读
  • 原文地址:https://www.cnblogs.com/MingleYuan/p/10628491.html
Copyright © 2020-2023  润新知