zoukankan      html  css  js  c++  java
  • 文件系统

    文件系统

    1、什么是文件系统

    ​ 操作系统提供给你操作硬盘的一个工具

    2、为什么要使用文件:

    ​ 为了永久存储数据

    3、怎么用文件:

    文件的路径分为:

    ​ 相对路径

    ​ 绝对路径

    python中如何使用文件:

    f = open('a.txt')
    
    print(f.readable()) # 判断当前文件是否可读
    print(f.writable()) # 判断当前文件是否可写
    
    del f # 回收变量资源  python本身的垃圾回收机制,这步我们可以省略
    f.close() # 回收操作系统的资源  python本身不会回收系统的资源,若我们忽略,则会导致系统内存资源浪费 
    

    python中with的用法:

    with open('a.txt',mode='r')as rf #with 会自动帮你回收操作系统的资源,无需自己操作
    

    python中默认打开文件的模式:

    rt (read text) rb (read bytes)

    with open(r'dira.txt',mode = 'rb')as f :   #r的作用是转义,就是去除后边字符的特殊意义 
    

    打开文件的三中模式:

    r :

    1. 只读
    2. 如果文件不存在,会报错

    w : (慎用)

    1. 只写
    2. 如果文件不存在,则会新建一个文件写入数据
    3. 如果文件存在,即会将原数据覆盖,重新写入

    a :

    1. 追加写
    2. 如果文件不存在,则会新建一个文件写入
    3. 如果文件存在数据,会在已有的数据后面追加数据
    #控制文件读写内容的模式:
    大前提:t、b模式不能单独使用,必须与r、w、a、之一结合使用 
        t(默认):文本模式
            1、读写文件都是以字符串为单位
            2、只能针对文本文件
            3、必须指定encoding参数
         b:二进制模式
            1、读写文件都是以bytes/二进制 为单位
            2、可以针对所有文件
            3、一定不能指定encoding
            
    with open('a.txt', mode = 'rt', encoding = 'utf-8')as f :
        res = f.read()
        print(type(res))
     <class 'str'>       
    with open('a.txt', mode = 'wt', encoding = 'utf-8')as f :
        s = 'sean'      
        f.write(s)
        print(f)
    <_io.TextIOWrapper name='a.txt' mode='wt' encoding='utf-8'>
         #t模式只能用于操作文本文件,无论读写,都应该以字符串为单位,而存取硬盘的本质都是二进制的形式,当指定t模式时,内部帮我们做了编码和解码
        
        
    #b模式的使用:
    读写的都是二进制
    
    

    操作文件的方法

    读操作:

    ​ f.read() # 读取所有的内容,执行完该操作后,文件指针会移到文件末尾

    ​ f.readline() # 读取一行内容,光标移到第二行首部

    ​ f.readlines() #读取每一行内容,存放于列表

    注意:

    f.read() 与 f.readlines() 都是将内容一次性读入,如果内容过大会导致内存溢出,

    若还想将内容全读入内存,则必须分多次读入,有两种方式实现:

    # 方式一
    with open('a.txt',mode='rt',encoding='utf-8') as f:
     for l in f:
         print(l) # 同时只读入一行内容到内存中
    
    # 方式二
    with open('1.mp4',mode='rb') as f:
     while True:
         data=f.read(1024) # 同时只读入1024个Bytes到内存中
         if len(data) == 0:
             break
         print(data)
    

    判断文件方法:

    f.readable() #文件是否可读
    f.writable() #文件是否可写
    f.close  # 文件是否关闭
    f.flush() # 立刻将文件内容刷到硬盘
    

    控制文件内光标的移动:

    若想读取文件某一特定位置的数据,则需要f.seek方法主动控制文件内的光标的移动:
    f.seek(指针移动的字节数,模式控制)即:
    f.seek(offset,whence)
    offset:相对偏移度(光标移动位数),针对字节
    whence:指定光标位置从何开始
        0:从文件开头
        1:从当前位置
        2:从文件末尾
    ntf-8:
        中文是3个bytes
        英文是1个bytes
    gbk:
        全部是2个bytes
        
    open函数不设置encoding,默认是gbk
        与encode没有关系,encoding只是一个参数
    
    f.tell #查看当前文件指针距离文件头的位置
    
  • 相关阅读:
    *****.NET程序首次加載慢問題
    *****How to access a repositoryItemButtonEdit value from a FileDlg
    抽象类与接口的区别
    C#中使用Split分隔字符串的技巧
    *****User Control Instance/DataGridView.Columns in Visual Studio Design
    LinksPersistInfo not work!
    LookUpEdit用法
    Devpress.XtraGrid.GridControl 笔记
    *****动态执行sql
    *****LookUpEdit hide columns
  • 原文地址:https://www.cnblogs.com/127-2933/p/11867912.html
Copyright © 2011-2022 走看看