zoukankan      html  css  js  c++  java
  • 007_文件的简单操作

    1,文件操作

      1.1,文件路径:
    • 绝对路径:即从根目录开始,从盘符开始(D:PycharmProjectsS9Classday008文件操作练习)
    • 相对路径:当前路径下的(即同一文件下)(文件操作练习)
      1.2,编码方式:utf-8 gbk。。。
      1.3,操作方式:只读,只写,追加,读写,写读。。。
      1.4,以什么编码的方式储存的文件,就以什么编码打开进行操作 
      1.5,bytes类型指字节型字符串utf-8,gbk,ascii等,Unicode是字符串型

    2,文件只读(r模式)
      2.1,绝对路径
    f = open('D:PycharmProjectsS9Classday008文件操作练习',mode='r',encoding='utf-8')
    content =  f.read()        #文件内容:文件操作
    print(content)             #>>> 文件操作
    f.close()
    
      对于绝对路径,因为    在程序中有转义的作用,有时会出现转义的情况(例:	)所以要使用 \ (例:\t)以取消转义的作用
      2.2,相对路径
    f = open('文件操作练习',mode='r',encoding='utf-8')
    content = f.read()        #文件内容:文件操作
    print(content)            #>>> 文件操作
    f.close()
    
    3,文件只读(rb模式,即只读,bytes类型)各种操作模式都可加小写b,变成对应的bytes类型的模式)
    • rb模式,将内容用原编码方式以对应的字节码形式读取出来
    • rb模式下不用表明编码方式
    f = open('文件操作练习',mode='rb')       #文件内容:文件操作
    content = f.read()
    print(content)      #>>>b'xe6x96x87xe4xbbxb6xe6x93x8dxe4xbdx9c'
    f.close()
    
    4,文件只写(w模式)
    • 对于写:没有此文件夹就会创建文件
    • 写,先将源文件的内容全部清除,,然后写入新的内容
    f = open('文件操作练习',mode='w',encoding='utf-8')   #文件内容:文件操作
    f.write('写入的内容')                                #文件内容:写入的内容
    f.close()
    
    5,文件只写(wb模式)
    • wb模式,将内容先编码成字节码
    f = open('文件操作练习',mode='wb')       #文件内容:文件操作
    f.write('写入的内容wb'.encode('utf-8'))  #文件内容:写入的内容wb
    f.close()
    
    6,文件追加(a模式)(在原内容后添加新内容
    f = open('文件操作练习',mode='a',encoding='utf-8')     #文件内容:文件操作
    f.write('追加内容')                                    #文件内容:文件操作追加内容
    f.close()
    
    7,文件追加(ab模式
    f = open('文件操作练习',mode='ab')       #文件内容:文件操作
    f.write('追加ab'.encode('utf-8'))       #文件内容:文件操作追加ab
    f.close()
    
    8,文件读写(r+模式)
      8.1,先读取原内容,再将新内容添加到原内容之后
    f = open('文件操作练习',mode='r+',encoding='utf-8')      #文件内容:文件操作
    print(f.read())                                         #>>>文件操作
    f.write('读写模式')                                      #文件内容:文件操作读写模式
    f.close()
    
      8.2,先写后读不行
         r+模式下先写后读,新内容会将原内容从头开始依次覆盖,然会再将剩余的原内容读出
    f = open('文件操作练习',mode='r+',encoding='utf-8')       #文件内容:文件操作
    f.write('读写')                                          #文件内容:读写操作
    print(f.read())                                          #>>>操作
    f.close()
    
    9,文件读写(r+b模式)
    f = open('文件操作练习',mode='r+b')          #文件内容:文件操作
    print(f.read())                             #>>>b'xe8xafxbbxe5x86x99xe6x93x8dxe4xbdx9c'
    f.write('文件读写r+b模式'.encode('utf-8'))   #文件内容:文件操作文件读写r+b模式
    f.close()
    
    10,文件写读(w+模式)
    f = open('文件操作练习',mode='w+',encoding='utf-8')   #文件内容:文件操作
    f.write('写读模式')                                  #文件内容:写读模式   #写入会将原文件删除再写入
    f.seek(0)                                           #因为写完后光标是在内容后,所以将光标调至前面
    print(f.read())                                     #>>>写读模式
    f.close()
    
    11,追加且可读模式(a+模式)
    f = open('文件操作练习',mode='a+',encoding='utf-8')    #文件内容:文件操作
    f.write('a+模式')                                     #文件内容:文件操作a+模式
    f.seek(0)
    print(f.read())                                       #>>>文件操作a+模式
    f.close()
    
    12,读操作详解
    f = open('文件操作练习',mode='r+',encoding='utf-8')   #文件内容:文件操作
    content = f.read(3)     #读操作可以设定从光标位置读几个字符
    print(content)          #>>>文件操
    f.close()
    
    13,seek()    按照字节定位光标的位置
    f = open('文件操作练习',mode='r+',encoding='utf-8')   #文件内容:文件操作
    f.seek(3)               #utf-8编码的汉字是3字节,所以光标在‘文’的后面,  #此时不是3的倍数时会报错或乱码
    content = f.read()
    print(content)          #>>>件操作
    f.close()
    
    14,f.tell()   告诉你光标的位置
    可以再用seek()进行追加,可用此方法进行断点续接
    f = open('文件操作练习',mode='r+',encoding='utf-8')   #文件内容:文件操作
    print(f.tell())         #>>>0
    f.close()
    
    f = open('文件操作练习',mode='a+',encoding='utf-8')   #文件内容:文件操作
    f.write('举例')                                       #文件内容:文件操作举例
    count = f.tell()
    f.seek(count-9)
    print(f.read(2))                                      >>>作举
    f.close()
    
    15,文件按行读
    f = open('文件操作练习',mode='r+',encoding='utf-8')
    line = f.readline()     #每次只读取一行    #内存中只有一行
    print(line)             #>>>文件操作
    line = f.readline()
    print(line)             #>>>一行
    f.close()
    

      

    f = open('文件操作练习',mode='r+',encoding='utf-8')
    line = f.readlines()    #每一行当成列表中的一个元素,添加到list中     #还是全读,将所有读到内存中
    print(line)             #>>>['文件操作
    ', '二行
    ', '三行']
    f.close()
    

      

    f = open('文件操作练习',mode='r+',encoding='utf-8')
    for line in f:            #一行一行的读
        print(line)
    f.close()
    
    16,文件是否可读
    f = open('文件操作练习',mode='r+',encoding='utf-8')
    print(f.readable())     #>>>True
    f.close()
    
    17,截取内容
    • 截取源文件的内容,将截取的内容保存,其他的删除
    f = open('文件操作练习',mode='r+',encoding='utf-8')    #文件内容:文件操作
    f.truncate(6)       #参数是字节长度                    #文件内容:文件
    f.close()
    

     18,用with方法打开

    • 用with方法打开处理文件,不用考虑操作文件后忘记关闭文件的问题,该方式会在操作结束后自动释放已打开的文件
    • 用with方法可以一次打开多个文件进行处理,注意:重复用不同模式打开同一文件夹时,以最后一个打开为准
    • python再编程时如果可以通过加字符‘’再在下一行继续写这一行没写完的
    with open('文件操作练习',mode='r',encoding='utf-8') as name,
         open('文件操作练习',mode='w',encoding='utf-8') as name2:      #文件内容:文件操作
         name2.write('name2')         #文件内容:name2
    
    19,修改文件
        文件事实上是不能修改的,因此修改文件的思路:
           将原文件内容一行一行的读取到内存,查看是否修改,在内存中做修改,
            然后创建一个新的文件,并将内容写入,然后将源文件删除,将新文件重新命名
        open()的模式默认是'r'

    with open('小护士',encoding='utf-8') as f,
        open('新小护士',mode='w',encoding='utf-8') as f2:       #打开两个文件
        for line in f:                                          #一行一行的读到内存,内存中只有一行
            if '星儿' in line:
                line = line.replace('星儿','阿娇')              #将需要修改的修改
            f2.write(line)
    
    20,删除,重命名文件
    import os
    os.remove('小护士')    #删除‘小护士’文件
    os.rename('新小护士','小护士')     #重命名文件,将‘新小护士’重命名‘小护士’
    

      






  • 相关阅读:
    Spring导出可以运行的jar包
    sed 多行处理详细总结
    Shell获取某目录下所有文件夹的名称
    linux 删除换行符
    linux 切分文件
    jdbctemplate 获取数据表结构的方法&注意事项
    linux 使用ifstat查看网络使用情况
    postgresql 函数获取多个字段的数字大小值
    vim 正则替换功能
    jstl 格式化
  • 原文地址:https://www.cnblogs.com/eternity-twinkle/p/10483188.html
Copyright © 2011-2022 走看看