• 文本文件处理


    在python2 与python3中对文本的读写有很大的差异

    1 字符串的语义发生了变化

     在python2 中 unicode字符串存入到文件中需要先进行编码

    如  s = u'你好'    存储需要编码  s.encode('utf8')  , 编码之后才能存道文件中 之后读取时采用decode('utf8') 进行解码

    python3 中一般将二进制字符存入文件中b'ss'

    通过encouding() 进行编解码 , 自动完成编码与解码

    如何处理二进制文件

    在struct 下的unpack 可以完成对二进制的解析

    如何设置文件的缓存?

    为了减少多次的IO 写操作,文件通常使用缓存区, 当写入的文件比较小时候,都先放到缓存区中

    默认缓存区的大小是4096个字节

    在全缓存,  

    # 设定缓存区大小
    
    f = open('file2','w', buffering=2048 )

    行缓存: 

    #行缓存把buffer改为1 
    f = open('file2','w', buffering=1)

    无缓存 : 将buffering 改为0 

    如何将文件映射道内存?

     可以使用mmap函数

    如何访问文件状态?

     方法:

    1 使用系统调用,os 模块 下的stat , fstat,lstat 获取文件状态

    import os
    s = os.stat("xiao2.txt")
    print(s) 结果:

    os.stat_result(st_mode=33206, st_ino=844424930146185, st_dev=180626563, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1657205103, st_mtime=1657205103, st_ctime=1657204732)

    
    
    # 对文件状态进行解析
    import stat
    print(stat.S_ISDIR(s.st_mode)) # 判断是否是文件夹
    print(s.st_mode & stat.S_IRUSR)   # 判断用户是否有读权限, 返回大于0 表示有
    print(s.st_mode & stat.S_IXUSR) # 判断用户执行权限 返回0 表示没有

    import time
    print(s.st_atime) # 访问时间,返回秒数
    print(time.localtime(s.st_atime)) # 返回年月日

    # lstat 取到符号链接文件

    2 标准库os.path下一些函数

    print(os.path.isdir("xiao2.txt"))  # 判断是不是文件夹
    print(os.path.islink("xiao2.txt")) #判断是否是符号链接
    print(os.path.isfile("xiao2.txt")) # 判断普通文件
    print(os.path.getatime("xiao2.txt")) # 获取访问时间
    print(os.path.getsize("xiao2.txt")) # 获取文件大小

    如何使用临时文件?

    使用empfile下的tempporaryFile , NamedTemporaryFile

    from tempfile import TemporaryFile,NamedTemporaryFile
    f = TemporaryFile() # 创建临时数据 由他创建是临时文件,实在系统路劲中找不到的
    f.write('aasd')
    #读物临时文件
    f.seek(0)
    f.read(100)

    f2 = NamedTemporaryFile() #  创建一个又名字的临时文件
    print(f2.name) # 查看文件名字

    f3 = NamedTemporaryFile(delete=False) # 在删除文件后, 临时文件不被一起删除
  • 相关阅读:
    继承 多态
    封装练习
    PHP 面向对象封装
    面向对象 类和对象
    PHP前端和数据库的连接
    数组2
    PHP数组
    正则表达式
    PHP字符串
    linux基础
  • 原文地址:https://www.cnblogs.com/huxl1/p/16475841.html
Copyright © 2020-2023  润新知