• 文件读写


    一、文件打开open

      文件打开针对当前的工作目录。

      可以使用os.chdir() 来改变工作目录

    1.1 open的两种方式

      1.手动挡,需要手动关闭

    f = open('1.py', 'r')
    print(f.read())
    f.close()

      2.自动挡,使用with管理上下文,自动关闭

    with open('1.py', 'r') as f:
        print(f.read())

    1.2 文件读写模式

    # 基本三种模式
      r    以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
      w    以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
      a    以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建
    # 扩展模式
      r+    在r的基础上增加了可写功能,文件指针指向开头
      w+    在w的基础上增加了可读功能, w+,跟w一样,增加了可读功能。
      a+    在a的基础上增加了可读功能,不管文件指针在哪,都移到末尾
    在上面这几种模式中,都可以混搭一个b模式,以二进制的方式进行读写。
    保证在扩平台或其他操作,读写正确。 在lunux下会忽略b,默认就是二进制读取

    二、文件读操作

    2.1  read()

      直接read(),获取全部,一次性存入内存中。返回一个字符串。 针对大文件出错

    2.2 read(size)

      指定size读取,可以解决大文件读取出错。

    while True:
        block = f.read(1024)
        if not block:
            break

    2.3 readline()

      每次读取一行

    while True:
        line = f.readline()
        if not line:
            break

    2.4 readlines():

      读取全部的行,构成一个list,通过list来对文件进行处理,但是这种方式依然会造成MemoyError

    for line in f.readlines():
        ....

    2.5 使用文件描述符,可迭代对象

    with open(filename, 'r') as flie:
        for line in file:
            ....

    三、文件写操作

      写操作就比较的简单了,两种方法

    3.1 write()

      参数为字符串

    3.2 writeline()

      参数为一个序列,比如列表

    四、文件定位

    with open('2.py', 'w+', encoding='utf-8') as f:
        f.write('我是中国人')
        print(f.tell())     # 使用字节来计算,一个汉字3字节,输出15
        f.seek(0)
        print(f.read(3))    # 使用字符来计算,输出 '我是中',因为读的时候有空格或其他符号(1个字节会错乱)
  • 相关阅读:
    vue 当前页跳转并强制刷新
    (转)vue项目刷新当前页面
    查询sqlserver中表信息
    (转) 自旋锁和互斥锁
    Web API 自定义文件内容的定制类
    (转)缓存
    (转) redis的事务和watch
    ASP.NET MVC , ASP.NET Web API 的路由系统与 ASP.NET 的路由系统是怎么衔接的?
    (转) 分布式系统关注点——99%的人都能看懂的「熔断」以及最佳实践
    php项目权限系统设计
  • 原文地址:https://www.cnblogs.com/louhui/p/9061870.html
Copyright © 2020-2023  润新知