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()等函数就要重新生成新的句柄再对文件操作
  • 相关阅读:
    Allegro PCB Design GXL (legacy) 使用slide无法将走线推挤到焊盘的原因
    OrCAD Capture CIS 16.6 导出BOM
    Altium Designer (17.0) 打印输出指定的层
    Allegro PCB Design GXL (legacy) 将指定的层导出为DXF
    Allegro PCB Design GXL (legacy) 设置十字大光标
    Allegro PCB Design GXL (legacy) 手动更改元器件引脚的网络
    magento产品导入时需要注意的事项
    magento url rewrite
    验证台湾同胞身份证信息
    IE8对css文件的限制
  • 原文地址:https://www.cnblogs.com/Mr-wangxd/p/9438873.html
Copyright © 2011-2022 走看看