• python基础语法-文件操作及深浅拷贝(简单实用)


    文件操作

    使用内置函数open来操作文件有三步:打开文件,操作文件,关闭文件。
    open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

    读写形式

    r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    f = open(‘/Users/michael/test.txt’, ‘r’)

    rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

    r+: 打开一个文件用于读写。文件指针将会放在文件的开头。

    rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

    w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

    a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

    ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    文件的基本操作还有:
    flush(), 即时刷新,可以在文件未关闭之前看到文件更新内容,不接参数。

    readline(),读取当前指针处的一行内容。

    readlines(n),读取当前指针处的n个字符,如果n不写,则默认全读完,如果n小于当前行的字符长度,则读取当前行内容,包括换行符\n,如果n大于当前行的字符长度,则一直到第从当前指针处的第n个字符所在的行,每一行的内容包括换行符作为一个列表的元素,最终返回该列表。

    close(),关闭文件,文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

    seek(n),调整指针位置

    tell(),返回当前指针位置。

    truncate(),截取当前指针处之前的字节内容。文件关闭时,就只有截取的内容了。

    read(n),读取从当前指针处的多少个字符。返回的是字符串,read函数可以一次性读取文件全部内容,如果文件内容不大的话,适合使用这个函数一次性读取全部内容

    write(),写入字符串或字节。

    next(),逐行读取数据,和readline() 相似,唯一不同的是,f.readline() 读取到最后如果没有数据会返回空,而f.next() 没读取到数据则会报错

    try…finally 保证无论是否出错都正确关闭文件
    try:
    f = open(‘/path/to/file’, ‘r’)
    print(f.read())
    finally:
    if f:
    f.close()

    with 语句自动帮我们调用close() 方法 with打开文件会自动关闭文件
    with open(‘/path/to/file’, ‘r’) as f:
    print(f.read())

    浅拷贝

    浅拷贝

    浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用,只复制最外层的结构,除最外层其余的直接将其地址引用过来。
    浅拷贝出来的对象就是外新内旧的对象,对象本身(id)和原始对象完全不同,但是子对象和原始对象的子对象是一样的。
    可以通过列表自带的copy()或者copy模块的copy.copy()实现浅拷贝
    对不可变类型,比如元组,字符串,不可以使用切片或者tuple方法浅拷贝,这两种都是对原对象的引用

    深拷贝

    全部数据/结构都进行复制,(除不可变类型)增大数据独立性 ,如果深拷贝中,只要发现复制数据中有一个不是不可变类型就重新创建。
    深拷贝出来的对象就是完完全全的新对象,不管是对象本身(id),还是对象中包含的子对象,都和原始对象不一样。
    相当于重新分配一块内存,创建了一个新的对象
    一般以copy.deepcopy() 实现深拷贝

  • 相关阅读:
    免费IP代理-如何更改自己的IP做到匿名浏览
    行业追踪,2023-10-16
    MySQL 存储过程,语法+示例,超详细!!
    基于最小二乘插值(Least-Squares Interpolation)图像超分辨率重构算法研究-附Matlab代码
    JVM学习——类的加载器以及类的加载过程
    Linux篇16进程信号第一部分
    Linux查看端口使用情况
    【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付
    Vue模板语法(下)
    JK405R-SOP16录音芯片ic方案的测试板使用说明以及咪头如何选择
  • 原文地址:https://blog.csdn.net/pythonuser1/article/details/126124869