zoukankan      html  css  js  c++  java
  • Python:文件操作

    Python:文件操作

    open()调用的内置函数,内置函数调用的系统内部的open,一切对文件进行的操作都是基于文件句柄f1.

    文件操作的步骤:

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

    切记:最后要关闭文件(否则可能会有意想不到的结果)

    win的操作系统安装时是默认的gbk编码,而linux操作系统默认的是utf8编码;

    打开文件

    文件句柄 = open('文件路径',encoding='指定文件编码', mode='模式')

    f1 = open(r'd:/联系方式.txt', encoding='gbk', mode='r')    #指定绝对路径
    print(f1.read())
    f1.close()
    
    f1 = open('log1', encoding='gbk', mode='r')               #相对路径是在该py文件同级目录下
    print(f1.read())
    f1.close()

    为了防止忘记关闭文件,可以使用上下文管理器来打开文件

    with open('文件路径','模式') as 文件句柄:

    with open('log1', encoding='utf-8') as f1,
        open('log2', encoding='utf-8', mode='w') as f2:
        content = f1.read()
        f2.write(content)
    
    with open('log1', encoding='utf-8') as f1:
        print(f1.read())
        f1.close()
        pass
        with open('log1', encoding='utf-8',mode='w') as f2:
            f2.write('666')

    打开文件的模式有:

    r,只读模式(默认)。
    
    w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    
    a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
    
    r+,可读写文件。【可读;可写;可追加】
    
    w+,写读
    
    
    "U"表示在读取时,可以将 
     
     
    自动转换成 
     (与 r 或 r+ 模式同使用)
    
    rU
    
    r+U
    
    
    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
    
    rb
    
    wb
    
    ab

    关闭文件

    文件句柄.close()

    文件:读

    #读 r
    #
    1 read() 全读出来 f1 = open('log1', encoding='utf-8') content = f1.read() print(content) f1.close() #2 read(n) 读一部分 f1 = open('log1', encoding='utf-8') content = f1.read(3) print(content) f1.close() f1 = open('log1', mode='rb') print(f1.read(3).decode('utf-8')) f1.close() # r 模式 read(n) n 按照字符读取。 # rb 模式 read(n) n 按照字节读取。 #3 readline() 按行读取 f1 = open('log1', encoding='utf-8') print(f1.readline()) print(f1.readline()) print(f1.readline()) f1.close() #4 readlines() 依次读取每行  f1 = open('log1', encoding='utf-8') print(f1.readlines()) f1.close() # 5 for 循环 f1 = open('log1', encoding='utf-8') for line in f1: print(line) f1.close()
    # r+ 读写  先读后写
    f1 = open('log1', encoding='utf-8', mode='r+')
    print(f1.read())f1.write('666')
    f1.write('a')
    print(f1.read())
    f1.close()

    文件:写

    # w 没有文件,新建文件写入内容
    # 有原文件,先清空内容,在写入新内容。
    f1 = open('log2', encoding='utf-8', mode='w')
    f1.write('桃白白fdksagdfsa')
    f1.close()
    
    # 图片的读取及写入
    f1 = open('1.jpg', mode='rb')
    content = f1.read()
    
    f2 = open('2.jpg', mode='wb')
    f2.write(content)
    f1.close()
    f2.close()
    
    # w+ 先写后读
    f1 = open('log2', encoding='utf-8', mode='w+')
    f1.write('两款发动机了')
    f1.seek(0)
    print(f1.read())
    f1.close()
    
    # 追加 a
    #  a 没有文件,新建文件写入内容
    f1 = open('log3', encoding='utf-8', mode='a')
    # f1.write('alex 666')
    f1.write('
    alex 666')
    f1.close()
    
    # a+
    f1 = open('log3', encoding='utf-8', mode='a+')
    f1.write('python22期')
    f1.seek(0)
    print(f1.read())
    f1.close()

    文件:改

    操作步骤如下:

    # 1,以读模式打开原文件。
    # 2,以写的模式打开一个新文件。
    # 3,将原文件读出按照要求修改将修改后的内容写入新文件。
    # 4,删除原文件。
    # 5,将新文件重命名原文件。

    import os
    with open('file', encoding='utf-8') as f1,
        open('file.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('file')
    os.rename('file.bak', 'file')

    升级版本
    import os
    with open('file', encoding='utf-8') as f1,
        open('file.bak', encoding='utf-8', mode='w') as f2:
        for line in f1:
            new_line = line.replace('SB','alex')
            f2.write(new_line)
    
    os.remove('file')
    os.rename('file.bak', 'file')

     其他操作:

    # readable 是否可读
    # writable 是否可写
    # f1.seek(12)     #任意调整
    # f1.seek(0,2)    #光标调整到最后
    # f1.seek(0)      #光标调整到开头
    # f1.tell()       #告诉光标的位置
    # f1.truncate(3)  #按照字节对原文件进行截取 必须在a 或 a+ 模式
    
    f1 = open('log3', encoding='utf-8', mode='a+')
    # f1.write('python22期')
    # print(f1.read())
    print(f1.readable())
    print(f1.writable())
    f1.close()
    
    
    f1 = open('log2', encoding='utf-8')
    f1.read()
    print(f1.tell())
    print(f1.seek(0))
    print(f1.seek(0,2))
    f1.seek(12)           #任意调整
    f1.seek(0,2)        #光标调整到最后
    f1.seek(0)         #光标调整到开头
    print(f1.tell())     #告诉光标的位置
    f1.close()
    
    
    f1 = open('log3', encoding='utf-8', mode='a+')
    f1.truncate(3)       #按照字节对原文件进行截取 必须在a 或 a+ 模式
    f1.close()
  • 相关阅读:
    spring mvc: 页面重定向调整
    spring mvc: 静态资源/文件配置
    spring:设置映射访问路径 或 xml配置访问路径 (spring mvc form表单)
    Spring mvc使用不了jstl 或者 Spring mvc不解析jstl
    spring3: 对JDBC的支持 之 Spring提供的其它帮助 SimpleJdbcInsert/SimpleJdbcCall/SqlUpdate/JdbcTemplate 生成主键/批量处理
    spring3: 对JDBC的支持 之 关系数据库操作对象化
    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
    python的赋值,深拷贝和浅拷贝的区别
    Locust性能测试
    SpringAOP的注解方式
  • 原文地址:https://www.cnblogs.com/bailo/p/9085006.html
Copyright © 2011-2022 走看看