• python 8


    一、文件操作初识

    1.

    path 文件路径 F:文件.txt

    encoding 编码方式 utf-8, gbk ...

    mode 操作方式 只读,只写,读写,写读,追加...

    f1 = open(r'F:文件.txt', encoding='utf-8', mode='r')
    print(f1.read())
    f1.close()

    绝对路径:从根目录一直找到文件。

    相对路径:从当前目录开始找到的文件。

    2. r w a

    读模式:

    r 只读

    rb 直接读bytes类型

    f1 = open('世界和平.txt', mode='rb')
    print(f1.read())
    f1.close()

    r+ 读写 写的那部操作是覆盖,并不会清空原文件

    r+b 直接对bytes类型进行读写

    写模式:

    w 只写 若没有该文件,则创建该文件。若存在该文件,则先删除该文件,再创建该文件。

    f1 = open(r'世界和平.txt', encoding='utf-8', mode='w')
    f1.write('薛之谦的儿子')
    f1.close()

    wb 直接写入bytes类型

    f1 = open(r'世界和平.txt', mode='wb')
    f1.write('薛之谦的儿子'.encode('utf-8'))
    f1.close()

    w+ 写读 

    w+b bytes类型的写读

    追加模式:

    a 追加 若没有文件,创建文件写入内容,若有文件,直接在文件后面追加内容。

    ab a+ a+b 一样。。

    对于字母,数字,一些常见的特殊字符来说,gbk与utf-8都延用ASCII码的编写方式,所以相互之间可以通用。

    二、文件的常见操作。

    1..read()    .close()

    常用的文件句柄:f1_obj,  f1_file, file, file_handle...

    windows的默认编码方式为(当前国家的专属编码,中国为gbk)

    Linux,macOS的默认编码方式为:utf-8

    2.read(n)  读多少个xx  r模式下是按照字符读取,rb模式下是按照字节读取。

    3.readline() 按行读取 将光标移到下行开头

    4.readlines() 返回一个list,里边的元素分别是每一行

    5.for循环读取,每次读一行

    6.seek() 按照字节调整光标 当写入文件后,光标会移到最后,需要调整光标才能继续进行读取。

    seek(0, 2) 将光标调整到最后,断点续传时有用。

    非文字数据的读与写,只能用bytes类型的相关操作。

    7.readable() writable() 判断是否可读可写

    8.tell() 告诉光标的位置

    9.truncate() 对原文件进行截取,只能在a模式下使用。以字节为单位。

    若直接写truncate()或者truncate(0),则会清空光标后的所有内容。

    三、文件的另一种操作方法

    with open(r'F:世界和平.txt',encoding='utf-8', mode='r')as f1:
        print(f1.read())

    这个命令在短时间内会自动关闭文件,但是如果在with op() as下再使用with open() as操作同一文件时,最好在前边手动关闭,因为同一文件无法被定义为不同句柄。

    '''
    1,打开原文件 old_file,将原内容读取到内存。
    2,创建一个新文件new_file。
    3,将原内容通过你改写形成新内容,写入到新文件。
    4,将原文件删除。
    5,将新文件重命名成原文件。
    '''
    #方法一,原文件内容不打,可以用此方法,但是此方法还是很low。
    # import os
    # with open('change', encoding='utf-8') as f1,
    #     open('change.bak', encoding='utf-8', mode='w') as f2:
    #     old_content = f1.read()
    #     new_content = old_content.replace('alex', 'SB')
    #     f2.write(new_content)
    # os.remove('change')
    # os.rename('change.bak', 'change')
    # 方法2
    import os
    with open('change', encoding='utf-8') as f1,
        open('change.bak', encoding='utf-8', mode='w') as f2:
        for line in f1:
            new_line = line.replace('SB', 'alex')
            f2.write(new_line)
    os.remove('change')
    os.rename('change.bak', 'change')
  • 相关阅读:
    linux下如何解压和压缩文件
    windows如何查看jdk的安装目录
    java.sql.SQLException: Data truncated for column 'seat_number' at row 1
    Error:(23, 0) Could not find method implementation() for arguments [directory 'libs'] on object of t
    grandle Project sync failed.please fix your project and try again
    java如何实现批量删除pdf指定的页数
    Java实现批量将word文档转换成PDF
    Linux下查看目录文件数和文件大小
    IDEA启动Springboot时,解决报错java.lang.NoClassDefFoundError: javax/servlet/Filter
    如何SpringBoot项目改为外置Tomcat启动
  • 原文地址:https://www.cnblogs.com/leonraw/p/9010710.html
Copyright © 2020-2023  润新知