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

    1. open 的书写格式

    open  #打开
    文件句柄 = open(文件名字(必须是字符串),mode(模式,操作方式),文件的编码集)
    

    2. r模式

    ### r模式读内容
    #f = open('t1',mode='r',encoding='utf-8')    #r  只读
    #f(文件句柄) = open('t1',mode='r',encoding='utf-8')   #所有对文件的操作都是操作文件句柄 
    f = open('t1',mode='r',encoding='utf-8')
    content = f.read()
    print(content)      #特点:一次性全部读取
    
    content = f.read(3)
    print(content)      #mode = 'r',read里的内容就是表示读取的字符数量
    
    content = f.readline()
    print(content)     #读取一行,但是有个
    换行
    
    content = f.readline(100)
    print(content)     #只读一行里的几个数字 如果超出数字就只读一行
    
    content = f.readlines()
    print(content)     #读取一行 一行又一行,存放在一个列表里.
    

    4. rb模式

    #rb模式读取字节
    #从磁盘开始查找的就是绝对路径
    #如果直接写文件的格式叫做相对路径(qq.jpg):相对于pycharm来查找的一种路径 
    #推荐写法是相对路径:
    f = open('t1',mode='rb')
    #文件路径加入双斜杠  f = open('c:\Users\oldboy\qq.jpg',mode='rd')
    f = open(r'c:Usersoldboyqq.jpg',mode='rd')
    print(f.read())
    

    5. w模式

    #w模式
    #覆盖写内容,在写之前先把文件清空
    f = open('t1.txt',mode='w',encoding='utf-8')
    f.write('你好,世界')      #w模式如果文件不存在就新建一个
    f.write('hello,world')   #新内容覆盖以前的内容
    
    #w只有写没有读的功能
    f = open('t1.txt',mode='w',encoding='utf-8')
    print(f.write('内容'))    #返回写的数量
    

    6. wb模式

    #wb模式写字节
    f = open('t1.txt',mode='rb')
    f = open('t2.txt',mode='wb')
    f1.write(f.read())
    

    7. a模式

    #a模式 追加
    f = open('t1',mode='a',encoding='utf-8')
    f.write('内容')    #在文件最后添加内容
    

    8. ab模式

    ab
    f = open("2.jpg","ab")
    f.write("你好啊".encode("utf-8"))
    

    9. 可读可写模式

    #可读可写模式
    r+   读+写
    w+   写+读
    a+   追加+读
    f = open('t1',mode='r+',encoding='utf-8')
    print(f.read())   #读内容
    f.write('内容')   #写在后面
    
    f = open('t1',mode='w+',encoding='utf-8')
    f.write('内容')
    f.seek(0)         #移动文件光标
    print(f.read())     
    
    f = open('t1',mode='a+',encoding='utf-8')
    f.seek(o)
    print(f.read())    #a模式默认光标在后面
    f.write('内容')
    
    #最常用的是r+
    

    10. repr -- 显示数据的原生态

    s = "[1,'2',3,4]"
    print(s)
    print(repr(s))  
    

    11. 解决大文件

    #解决大文件:
    for i in f:
        print(i)  # 本质就是一行一行进行读取
    
    f = open(r'..day6	1.txt',mode='r',encoding='utf-8')
    #...  返回上一级
    f.write()
    

    12. with open

    #with open 
    
    with open("萝莉小姐姐电话号","r",encoding="gbk")as f,
    	open("萝莉小姐姐电话号.txt","w",encoding="gbk")as f1:
    	for i in f:
    	s1 = i.replace("大烧饼","井盖")
    		f1.write(s1)
    import os
    os.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")
    os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")
    
    with open("萝莉小姐姐电话号","r",encoding="gbk")as f:
    #     pass # 缩进里操作文件
    # print(f.read())  
    

    13. 总结

    r : 只读,不能写
        read()  读取全部   #模式是r的时候,read(3)就是读取三个字符; 模式是rb的时候,read(3)就是读取三个字节
        readline()  读取一行 #返回的内容会有
       
        readlines() 一行一行的读存放在一个列表中
    w : 清空写,不能读
        先清空文件的内容,再写
        当文件不存在的时候会创建一个文件
    a : 追加写.不能读
        写的内容一直都在文件的末尾.
    r+:读写
        错误示范:先写后读
        正确是:限度后写
    w+:写读
        写读的时候是读不到内容的,除非用seek(0)挪动光标
    a+:追加写
        追加写的时候是读不到内容的,除非用seek(0)挪动光标
    rb,wb,ab(****)
    rb:读字节
        read()  全部读取
        read(3) 看文件的操作方式  rb/wb/ab 字节
        readline 读取一行(自带换行符)
        readlines() 一行一行读取存放在列表中
    
    wb:清空,写
        open("xxx","wb")  # 进行清空
            write()  只能写字节
    ab:追加
        open("xxx","ab")
            write()  只能写字节
    其他操作:
        tell()  查看光标返回的是字节
        seek() 移动光标
            seek(0,0) 移动文件头部
            seek(0,1) 当前位置
            seek(0,2) 移动文件末尾
    
            seek(3)  # 按照字节进行计算 (计算方式根据编码计算)
    with open("文件路径","操作模式",编码")as f:
            操作文件
    
        with open的好处:
            1.可以同时打开多个文件
            2.能够自动关闭文件
     修改文件内容:
            1.创建一个新的文件
            2.将文件中的内容进行替换
            3.替换后的内容写入新文件中
            4.改变文件名
    
    #最常用的:r,w,a,r+,a+
    
  • 相关阅读:
    在ubuntu 12.04 中配置java环境(安装jdk, tomcat, maven, eclipse)
    java 对EXCEL表格的处理
    JAVA下载文件中文乱码问题
    Java 判断文件夹、文件是否存在、否则创建文件夹
    jspSmartUpload上传下载全攻略
    intellJ实用技巧
    main 方法,
    老师,有没有类似微信布局的好的开源库?
    Android 日常开发总结的技术经验 60 条
    新的android studio创建的fragment工程跟老师讲的结构有区别
  • 原文地址:https://www.cnblogs.com/qidaii/p/11189434.html
Copyright © 2011-2022 走看看