首页 > 其他分享 >文件操作补充

文件操作补充

时间:2023-01-14 23:56:41浏览次数:31  
标签:文件 name 补充 操作 path 序列化 os CodeBash

缓存IO

前面讲了文件的读写操作,但有时候并不是直接读写文件到文件对象,可以通过一个缓存  
StringIO,在内存中读写str
    from io import StringIO
    f = StringIO()
    f.write('hello')
    # 5
    f.write(' ')
    # 1
    f.write('world!')
    # 6
    print(f.getvalue())
    #hello world!

    while True:
        s = f.readline()
        if s=='':
            break
        print(s.strip())
    '''
    Hello!
    Hi!
    Goodbye!
    '''
    因此,基本和文件读写一样,StringIO只能操作str

如果要操作二进制数据,使用ByteIO

    from io import ByteIO
    f = BytesIO()
    f.write('中文'.encode('utf-8))
    #6
    print(f.getvalue())
    #b'\xe4\xb8\xad\xe6\x96\x87'    
    这是用utf8编码的二进制文件

总结:StringIO和BytesIO 一个重要的作用是做缓存, 将文件缓存在内存中,然后一次性序列化到 磁盘中


操作文件和目录

这个操作还是比较实用,毕竟可以通过python语言进行自动化的文件操作,应用范围较广

    import os
    os.name     操作系统类型
    os.environ.get('PATH')  获取环境变量下的PATH变量
    ```
    C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\pywin32_system32;D:\bin;C:\Program Files\Java\jdk1.8.0_281;D:\java\bin;D:\java\jre\bin;D:\maven\apache-maven-3.5.4\bin;C:\Windows\system32;C:\Program Files\Git\cmd;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Administrator\Anaconda3;...
    ```

    文件操作模块
    os.path.abspath('.')        查看当前目录的绝对路径
    #D:\vscodeBash\CodeBash

    pa=os.path.join('D:\vscodeBash\CodeBash','newdir')        拼接新的路径,用于后续创建,查找等操作

    os.mkdir(pa)        创建目录

    os.rmdir(pa)        删除目录

合并路径时,不要直接拼接字符串,要通过os.path.join()函数,这样可以正确处理不同操作系统的分隔符

同理,拆分路径,也不能直接拆字符串,通过os.path.split()函数,这个函数可以将路径拆成两个部分,后一个是最后一级目录或文件名

    os.path.split('D:\vscodeBash\CodeBash')
    #('D:\x0bscodeBash', 'CodeBash')

    os.path.splitext(('D:\vscodeBash\CodeBash\leetcode\两数之和.py'))
    #('D:\x0bscodeBash\\CodeBash\\leetcode\\两数之和', '.py')

另外还有一些储备知识:

os模块:
os.listdir(path) 列出了path路径下的所有文件和目录
os.path.isfile(name) 判定name文件存不存在
os.path.isdir(name)判定name是不是一个目录
os.path.getsize(name) 获得name文件的大小
os.path.getmtime(name) 获得name文件最后修改的时间(时间戳)


time模块:
time模块中时间表现的格式主要有三种:

  1. timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
  2. struct_time时间元组,共有九个元素组,将年,月,日,小时,分钟,秒,一周第几日,一年第几日,夏令时等变量组合在一起。
  3. format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

具体用法见python小demo两个练习


序列化与反序列化

序列化和编码其实意思一样,编码注重过程,用什么规则编码,序列化而是注重结果,要产生什么样的数据,其中最常见的是JSON格式序列化,JSON非常通用

标签:文件,name,补充,操作,path,序列化,os,CodeBash
From: https://www.cnblogs.com/HugoWang010220/p/17052846.html

相关文章

  • Python之集合操作举例
    #集合的操作(Set、frozenset)#集合特点:无序、元素不可重复、执行效率高但是比列表占用空间大,空间换时间s={"a","b","c"}s=set("abcd")print(s)#{'d','b',......
  • mysql01-基础操作-增删查改
    连接mysqlmysql-uroot-p数据库操作创建数据库createDATABASE<数据库名>;删除数据库dropdatabase数据库名;选择数据库use数据库名;表操作创建表CREATET......
  • 【Elastic Search】ES和Kibana操作
    下载地址:https://www.elastic.co/cn/downloads/也可以下载logstashxxBeats:全品类采集器,搞定所有数据类型,如Filebeat(采集日志和其他数据)准备: 1、启动ES:bin\elasticse......
  • 数据库表操作
    1:创建表(表结构)createtablestudent( idint(10)primarykeyauto_increment, namevarchar(10)notnull, ageint(4)default11, addressvarchar(200), iphoneint(......
  • Net 6 控制台配置文件读取
    原文网址:https://blog.csdn.net/shuikanshui/article/details/122809945一、使用App.Config作为配置文件1、项目增加应用程序配置文件App.config2、文件设置为“如果较......
  • Mybatis (三) Mybatis映射文件
    Mybatis映射文件☞博客导航,带你有序的阅读和学习!文章目录​​Mybatis映射文件​​​​基本CRUD​​​​增加​​​​增加并返回ID​​​​删除​​​​更新​​​​查询​......
  • Pikachu-文件上传漏洞通关详解
    Pikachu-文件上传漏洞通关详解一、clientcheck方法:禁用JS先进行功能测试,分别上传jpg和php文件jpg文件上传成功并通过burp抓到数据包php文件上传失败且burp没有抓......
  • PHP实现动态修改.env文件配置(适用于任何框架)
    /***@function动态的设置env文件中某项配置值*@param$env_pathstringenv文件路径*@param$keystring配置项*@param$valst......
  • (13)SpringBoot使用poi上传excel文件
      摘要:本文主要讲解,在SpringBoot项目中如何使用poi上传excel文件。SpringBoot整合poi和springmvc整合poi差别不大,springmvc整合poi也可以借鉴此文;由于后面打算写spring......
  • python模块之beautifulsoup —— html文件解析以及提取
    python模块之beautifulsoup——html文件解析以及提取beautifulsoup简称bs4,能够帮助我们处理html等超标记文本的标签,提取其中的文字,常用于爬虫领域等。bs4及相关模块......