• 文件操作



    f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,
    那么打开文件的默认编码很明显是操作系统说了算了,
    操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。
    这就用到了上节课讲的字符编码的知识:若要保证不乱码,文件以什么方式存的,就要以什么方式打开。
    f=open('a.txt','r',encoding='utf-8')

    (文本文件)文件只读模式:

    f = open('a.txt',mode='r',encoding='utf-8')
    data = f.read()
    print(data)
    mode 默认为读模式,不能写
    print(f.readline(5),end='')  #第一行,后边可以跟几个字节
    print(f.readlines(),end='') #读所有,文件放到列表中

    上下文管理:
    with (open('a.txt',mode='r',encoding='utf-8')) as f:
    print(f.read())
    ## as 赋值

    文件只写模式:
    f = open('a.txt',mode='w',encoding='utf-8')
    f.write('hello ') #写模式 文件存在清空,不存在则新建
    f.write('123 ')
    f.write('987 ')
    l = ['one ', 'two ', 'three ','fore '] #把列表放在文件里 换行符
    # for line in l:
    # f.write(line)

    f.writelines(l) #####直接把列表写在文件里
    追加模式:
    ##a: 追加模式,文件存在则把光标移动到末尾,文件不存在则新建
    f = open('a.txt',mode='a',encoding='utf-8')
    data = f.write('you are pig ') ##追加也是write

    #####把文件按行打印:
    f = open('a.txt', mode='r', encoding='utf-8')
    ##方法一:
    # data = f.readlines()
    # for line in data:
    # print(line)
    ######方法二:
    # while True:
    # line =f.readline()
    # if len(line) == 0:
    # break
    # print(line,end='')
    ######方法三:
    # for line in f:
    # print(line,end='')

    ####b:以bytes的形式操作文件内容

    #视频文件 b:以 bytes (最原始的二进制) 不能直接往硬盘写字符串 的形式去操作文件内容
    t = open('egon.jpg',mode='rb')
    data = t.read()
    print(data)
    ##wb bytes 模式不能是str 字符串,写入必须转换为 utf-8
    t = open('a.txt',mode='wb')
    data = t.write('hhhhhhhhhhh'.encode('utf-8'))

    ##ab 追加模式
    t = open('a.txt',mode='ab')
    data = t.write('xxxxxxx '.encode('utf-8'))
    data = t.write('fffffffff '.encode('utf-8'))

    #1. 打开文件的模式有(默认为文本模式):
    r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    w,只写模式【不可读;不存在则创建;存在则清空内容】
    a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】
    #2. 对于非文本文件,我们只能使用b模式,
    "b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
    rb wb ab 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

    #了解
    f.readable() #文件是否可读
    f.writable() #文件是否可读
    f.closed #文件是否关闭
    f.encoding #如果文件打开模式为b,则没有该属性
    f.flush() #立刻将文件内容从内存刷到硬盘
    f.name


    ####修改文件内容
    import os
    with open('e.txt',mode='r',encoding='utf-8') as data_r,
    open('.e.txt.swap','w',encoding='utf-8') as data_w:
    data = data_r.read()
    data = data.replace('alex','sb')
    data_w.write(data)
    #print(type(data))
    os .remove('e.txt')
    os.rename('.e.txt.swap','e.txt')


  • 相关阅读:
    jquery组件WebUploader文件上传用法详解
    asp.net Forms身份验证详解
    FormsAuthentication使用指南
    对于新手用c#中的delegate(委托)和event(事件)
    Union All/Union/Intersect操作
    DALFactory出现"未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案 .
    C#多线程编程实例 线程与窗体交互
    FormsAuthentication使用指南
    asp.net Forms身份验证详解
    chrome浏览器调试JS代码
  • 原文地址:https://www.cnblogs.com/cuixn/p/7554401.html
Copyright © 2020-2023  润新知