• Python学习心得第三周-03 文件管理--基本流程和打开方式


    '''
    1、什么是文件
    文件是操作系统为应用程序或者用户提供的一个操作硬盘的虚拟的单位

    2、为什么要用文件
    应用程序中需要经常将内存的数据永久保存下来,而应用程序又无法直接操作硬件
    只能通过操作系统提供的虚拟的单位去间接地操作硬盘

    3、如何用文件
    '''

    open操作做了哪些事?
    1、向操作系统发送打开文件的请求
    2、在应用程序拿到一个返回值,该值指向操作系统打开的文件
    f=open(r'D:SH_weekend_s2day03a.txt',mode='r',encoding='utf-8')
    f=>应用程序中的一个值=>操作系统打开的文件a.txt=>硬盘中的一块空间
    data=f.read()
    print(data)
    del f
    f.close() # 向操作系统发送关闭文件的请求
    print(f)
    f.read()
    

      

    总结:文件处理的步骤
    1、打开文件
    2、读/写文件
    3、关闭文件

    with open(r'a.txt',mode='r',encoding='utf-8') as f,
            open('b.txt',mode='r',encoding='utf-8') as f1:
        #文件处理的代码块
        pass
    

     

    文件的打开模式有三种
    r:只读模式(默认的)
    w:只写
    a:只追加写

    控制操作文件内容的模式有两种(不能单独使用,必须与r、w、a连用)
    t(默认的):text文本模式,该模式下操作文件内容的单位都是字符串,该模式只适用于文本文件
    强调:该模式下必须指定encoding="某种字符编码"

    b:bytes二进制模式,该模式下操作文件的内容的单位都是bytes,该模式适用于所有类型的文件


    1、r模式:只读模式(默认的)
    文件不存在则报错
    文件存在,并且文件指针调到文件的开头
    with open('a.txt',mode='rt',encoding='utf-8') as f:
        data1=f.read()
        print(type(data1))
        print('第一次:',data1)
        data2=f.read()
        print('第二次',data2)#第二次读取为空
    
        print(f.readable())#是否可读
        print(f.writable())#是否可写
     #   f.write('hello')#因为文件为只读模式,不可写,故写入是会报错
        pass
    
        line1=f.readline()
        print(line1,end='')
        print('====>')
        line2 = f.readline()
        print(line2, end='')
    
        l=f.readlines()
        print(l,type(l))
        pass
    

      


    2、w模式:只写模式
    文件不存在则创建一个空文档,并且文件指针跳到文件的开头
    文件存在,会将内容清空,并且文件指针跳到文件的开头
    强调:
    如果每次都是重新打开文件,那么文件内容总会清空,指针跳到开头
    如果在打开文件不关闭的情况下,连续的写入,本次写入会基于上一次指针所在的位置往后继续继续写
    with open('c.txt',mode='wt',encoding='utf-8') as f:
        print(f.readable())
        print(f.writable())
        f.readline()
    
        f.write('你好啊
    ')
        f.write('我的天')
        l=['1111
    ','2222
    ','33333
    ']
        for line in l:
            f.write(line)
        f.writelines(l)
    
        f.write('1111
    2222
    3333
    ')
    
        f.write('hello')
        f.writelines('hello')
        for i in 'hello':
            f.write(i)
    
        pass
    

     3、a模式:只追加写模式

    文件不存在则创建一个空文档,并且文件指针跳到文件的末尾
    文件存在,也会将文件指针跳到文件的末尾
    with open('a.txt',mode='at',encoding='utf-8') as f:
        print(f.readable())
        print(f.writable())
        f.read()
        f.write('你好
    ')
        f.writelines(['aaa
    ','bbbb
    '])
    4、b模式:bytes二进制模式,该模式下操作文件的内容的单位都是bytes,该模式适用于所有类型的文件
    强调:一定不能指定encoding参数
    with open('1.mp4',mode='rb') as f:
        data=f.readline()
        print(data,type(data))
    
    with open('d.txt',mode='rb') as f:
        data=f.read()
        # print(data,type(data))
        res=data.decode('utf-8')
        print(res)
    
    
    with open('d.txt','wb') as f:
        f.write('论颜值egon秒杀一切,论才华更是无能敌'.encode('utf-8'))
    
    
    
    遍历文件内容的方式
    with  open('d.txt',mode='rt',encoding='utf-8') as f:
        for line in f: #line='bbb
    '
            print(line,end='')
    
    
    with  open(r'd.txt',mode='rb') as f:
        print(f.readline())
        print(f.readline())
        print(f.readline())
    
    print(b'11111111
    ')
    print('=================')
    
    
    with open('1.mp4',mode='rb') as f:
        for line in f:
            # print(line,end='')
            print(line)
    
    python3 D:SH_weekend_s2day033 文件打开模式.py
    import sys
    print(sys.argv)
    print(sys.argv[2])
    了解:+
    r+b
    w+b
    a+b
    with open('a.txt',mode='r+t',encoding='utf-8') as f:
        # print(f.readable())
        # print(f.writable())
        # print(f.read())
        f.readline()
        f.write('4444')
    

     

    文件处理

    http://www.cnblogs.com/linhaifeng/articles/5984922.html

     

     
  • 相关阅读:
    LeetCode 122 best-time-to-buy-and-sell-stock-ii 详解
    LeetCode 763划分字母区间 详解
    LeetCode 861翻转矩阵后得分详细解法
    DES算法的python3实现
    LeetCode 309 Best Time to Buy and Sell Stock with Cooldown 解决方案
    Android Studio Gradle build 报错:Received status code 400 from server: Bad Request
    Error:Failed to resolve: com.android.support:recyclerview-v7:28.0.0解决方法
    身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    小程序跳转方式如:(wx.navigateTo)
    requset.js 封装promise的请求方法
  • 原文地址:https://www.cnblogs.com/zhutiancheng/p/9316840.html
Copyright © 2020-2023  润新知