• python基础-文件操作


    #######python基础-文件操作########
    
    # 1、请问什么文件?
        文件其实就是一个虚拟的单位,为什么这么说?是什么时候才有了文件的概念(我说计算机哈),是有了操作系统之后,
        操作系统把硬盘上的数据,整理成一个一个文件,便于用户方便操作。是不是没有操作系统,你想怎么去操作文件呢?
        哈哈,你手动去计算机硬盘自己去刻读,但是你知道你想操作的数据在哪里嘛?不知道对吧。
    
    # 2、比如pycharm解释器吧,它想操作一个文件的读写,请问它能自己去操作嘛?
        答案是不能,一个应用软件可以直接操作计算机硬件?那请问它是怎么才能操作硬盘上的数据。这么说吧,操作计算机硬件
        的只有操作系统才可以,所以一个应用软件想要操作硬盘上的数据,必须通过操作系统才行,然后让操作系统去帮你读写数据。
    
    在python中,怎么去操作硬盘上的文件呢?(其实是让操作系统帮你操作)
        open这个方法
        f = open('a.txt',mode='rt')
        # 打开a.txt文件,只读t模式
        # 上面那个代码请问执行了哪些操作?
        # 首先执行open函数对吧,执行这个函数,就是让python解释器向操作系统发出一个请求,说帮我打开a.txt这个文件
        # 此时操作系统的内存中是不是有一份对a.txt文件操作的内存。
        # 执行完open函数,它有一个差不多文件对象的返回值,赋值给了f,这是不是变量的赋值操作。
        # 那么就会python解释器的内存中,开辟一个名称空间,将f扔进去,f后面对应的是函数返回值的内存地址对吧。
        ### 总结:是不是在python解释器内有一份对a.txt文件操作的内存,在操作系统中是不是也有。
    
        执行f.read()
        # 上面说了f就是一个对象,它下面就会有一些列的方法对吧
        # f.read()执行这句代码,又做了些什么操作,想一想?
        # python解释器向操作系统发出一个读的指令,操作系统就去硬盘中读取到操作系统的内存中
        # 再由操作系统读取到python解释器内存中。
        # 注意一下,这个f是不是没有执行解码格式,那么操作系统就会以默认的字符编码去解码(gbk),如果你的文件是以gbk的话,也可以不用指定
        # 但是最好还是指定一下,避免出错。encoding='utf-8'
    
        # f.close()
        # 这句代码是向操作系统发出可以关闭文件的请求,操作就会关闭对a.txt的编辑操作。
        # 注意:很多人都是忘记写f.close(),就算不写我程序也不错报错,干嘛不写啊。
        # 对,你程序是不会出错,你py文件执行完毕之后,python解释器就是自动释放内存,垃圾回收机制嘛,
        # 但是你在操作系统里的这份资源谁去回收(操作系统可能过一段时间会清理),最好你用完了对该文件的操作,
        # 习惯性的把操作系统的资源也即是释放。
    
    上面说了一大堆,就是让你每次open一个文件,记得写close。
        # 思考?
            f = open('a.txt','rt',encoding='utf-8')
            data = f.read()
            f.close()
            print(f)
            print(f.read())
            # 请问上面代码执行结果,为什么
    
    下面写下对文件的操作,无非就是读写吧。
        f = open('a.txt',encoding='utf-8')
        # 上面没写对文件的操作和对文件内容格式操作,默认为读(r),文本模式(t),文本模式就是字符串格式嘛
        f = open('a.txt','w',encoding='utf-8')
        # 上面没写对文件内容格式操作,那默认就是文本模式呗(t)
    
    对文件操作:
        # r    只读模式
        # w    只写模式
        # a    只追加模式
    
    对文件内容格式操作
        # t    文本模式(str)
        # b    二进制模式(bytes)
    
    只读模式,下面的方法:
        f = open('a.txt','rt',encoding='utf-8')
        f.readline()    #只读一行
        f.read()        #读全部内容
        f.readlines()   #也是读全部内容,但是他的返回值一个列表,列表里的元素是每一行内容
        f.readable()    #是否可读
        f.writable()    #是否可写
    
    只写模式,下面的方法:
        f = open('a.txt','wt',encoding='utf-8')
        f.write()    #写内容
        f.writelines()    #也是写,但是参数是一个可迭代的,就和上面readable一样,每个元素最为一行
        f.readable()    #是否可读
        f.writable()    #是否可写
    
    只追加模式:
        f = open('a.txt','at',encoding='utf-8')
        f.write()  #追加,就是在文件最后开始写
    
    对文件内容格式操作:
        t,b模式就不再多说了,读出来的是二进制,或者字符串,写进去的是二进制或字符串
        # 注意:数据在硬盘保存的是二进制,所以你在使用b模式的时候,就不要写encoding参数了
        # 还有就是t,b模式不能单独使用,必须配合a,w,r
    
    
    忘了with这个方法
        with open('a.txt','rb') as f:
            pass
        with的功能就是你在它的代码块里写代码,写完了之后,就不需要执行f.close(),他会自动帮你执行
        对了,你可以多打开几个文件,用逗号区分,比如
        with open('a.txt','rb') as f,open('b.txt',''rb) as f2:
            pass
  • 相关阅读:
    oracle minus 与sqlserver except
    Ext.form.FieldSetI(转)
    C#系统服务定时执行(转)
    extjs4.0的数据代理proxy及数据模型的使用(转)
    JS属性defer的好处及IE8 提示 KB927917, IE6 IE7 提示操作已中止的解决办法
    水晶报表打印及多个报表打印到一个PDF文件里的办法
    C#不添加引用,动态调用webservice(转)
    向 ReportViewer 报表中添加页眉和页脚,控制页眉显示变量的值
    网站主要使用jquery总结(转)
    JSBuilder2使用方法(转)
  • 原文地址:https://www.cnblogs.com/zhuchunyu/p/9957281.html
Copyright © 2020-2023  润新知