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

    文件操作
    https://www.cnblogs.com/c-x-m/p/7756498.html
    操作文件三步  1 产生文件句柄  2 操作文件句柄   3关闭文件
    文件是一个可跌代对象,在使用文件路径时尽量使用相对路径,不适用绝对路径
    #with  open() as:
    使用with语法对文件进行读取,不用使用close()关闭。同时对多个文件操作,对file1读取,对file2覆盖写入
    with open('file.txt', encoding='utf-8') as fd1, 
        open('file2.txt', encoding='utf-8', mode='w') as fd2:
        print(fd1.read())
        fd2.write('qwe123')
    fd = open(r"路径", enconding='编码', mode='模式')          fd文件句柄
    fd = open(r"E:面授python项目代码练习等	est.txt", encoding='utf-8', mode='r')
    content = fd.read()
    print(contend)
    fd.close()
    mode(模式): r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 
    
    
    r   只读模式,光标默认在文件首,使用read()
    w   写模式,注意有w就会先将文件清空后再write()
    a   追加 append,默认将光标移动到文件末尾,换行需要自己手动加'
    '
    r+  读写模式,先读 后写 注意不管读多少字符,只要读过后有‘+’就会将光标移到文件尾(常用的读写模式)
    rb  读非文本文件,如图片等其他格式文件mode里如果有b. encoding就不能给了
    wb  写非文本文件,如对图片等文件进行写操作mode里如果有b. encoding就不能给了
    注意:带w的将会清空文件,带+的会操作过后光标会移动到文件末尾
    rb, wb, ab, bytes如果处理的是非文本文件, mode里如果有b. encoding就不能给了
    a+  追加读写
    ab  追加写
    r+b 读写非文本文件
    w+b 写读非文本文件
    a+b 追加读写非文本文件
    去除文件中读出的
    用.strip()
    #read()          不写参数表示返回读全文内容  r模式下是按字符读取的。 rb模式是按照字节取的(一个英文占一个字节,一个中文占三个字节)大文件禁用,因为会读出所有内容 用for合理
    #read(n)        读取n个字符,返回读取的内容,注意单位是字符
    #readline()      fd.readline() 一行一行读取,每调用一次读出一行,所有行读完了读出的都是空格s
    #readlines()    fd.readlines() 将每一行作为列表的元素读出,想去除读出的
    加 .strip()
    #for循环          最好 在内存中只占一行 常用的遍历文件
    
    fd = open('file.txt', encoding='utf-8', mode='r')
    for i in fd:
        print(i)
    fd.close()
    #fd.flush()    将缓存中的数据写入磁盘
    #write(line)   将line的内容写入,如果没有文件自动创建,常与fd.flush(),将句柄中的缓存写入磁盘中,返回值是写入的字符长度。
    
    fd = open('file.txt',encoding='utf-8', mode='w')
    fd.write('hello')
    #tell()   告诉指针的位置
    
    fd = open('file.txt',encoding='utf-8', mode='w')
    fd.write('hello')
    print(fd.tell())
    fd.close()
    #seek(参数1,参数2)    fd.seek(),移动光标位置单位是bity字节。当有换行时会被截断无返回值,seek的两个参数意义是,参数1:偏移量。参数二有三个值0表示文件开头, 1表示当前位置,2表示文件末尾。第二个参数默认为0。如seek(0)表示移动光标到文件开头,seek(0,2)移动光标到文件末尾。seek(2,1)相对当前位置向右偏移两个字节,seek(-1,2)光标移到文件倒数第一位
    注意:当使用seek()函数后就报编码错误,可能是使用truncate()函数将字节算错。导致,重算节取字节即可
    #truncate()     截取文件。fd.truncate()保留光标前内容,删除光标后面的内容。
    #truncate(12)  保留12个字节bity,其余的内容删除。
    文件权限mode不写默认为 读r
    windows默认gbk编码 Linux默认utf-8编码格式 pycharmv
    编码错误报错
    
    
    改文件
    文件修改只有两种方式: 1 通过中间变量存储,再重新刷进文件中
                       2 创建新文件后更改,再把文件改名
    更改文件时的5个步骤1 打开源文件,产生文件句柄
    2 创建新文件,产生文件句柄
    3 读取源文件,进行修改写入新文件
    4 将源文件删除
    5 将新文件重命名
    file3中的内容,要求将文中的所有“难”改为“易"
    行路难 行路难
    多歧路 今安在
    长风破浪难有时
    直挂云帆难沧海
    
    #导入os模块
    import os
    with open('file3.txt', encoding='utf-8', mode='r') as fd,
    open('file3.bak', encoding='utf-8', mode='w')as fd2:
        for oldfile in fd:
            newfiel = oldfile.replace('', '')
            fd2.write(newfiel)
        os.remove('file3.txt')
        os.rename('file3.bak', 'file3.txt')
    注:文件改名后,不能再用改名前的文件句柄了,如果想使用read()等函数就要重新生成新的句柄再对文件操作
  • 相关阅读:
    maven dependencies 里面的包怎么导出
    webUploader react 接口设计
    HTML5 History API实现无刷新跳转
    Object.defineproperty实现数据和视图的联动
    jsLoader、cssLoader、imageLoader
    【转】前端工程化-公共模块的依赖和常用的工作流
    JDBC详解
    正则表达式
    【GOF23设计模式】备忘录模式
    【GOF23设计模式】观察者模式
  • 原文地址:https://www.cnblogs.com/Mr-wangxd/p/9438873.html
Copyright © 2011-2022 走看看