zoukankan      html  css  js  c++  java
  • Python中的文件操作小记一

      简单的开个头,最近在学习Python,想简单的做个笔记,于是便写下了这篇文章

      首先呢,说一下在Python中有很多的模块,分为系统自带和外部的,在这里我就简单的介绍一下关于二进制文件

    的转换和存储,那么今天要用到的包就是 "struct",首先介绍一下这个“struct”里面两个比较有用的东西,一个是

    "struct.pack("i",a)",这个是把一个十进制的数字,转换成二进制,其中的参数我在后面交代。另一个比较有用的

    就是"struct.unpack("i",bytesInt)",不用说就知道,这个就是把二进制转成十进制,那么在下面我就用Python代码具

    体的介绍一下这两个的函数的用法以及一些其他的小知识

      1.struct.pack

        import struct           #导入struct模块

        a,b,c=12,10,5

        bytesInt=struct.pack("iii",a,b,c)  #其中i是int类型的意思,几个整数,对应几个i

        print(bytesInt)                            #打印出后(一个int,占四个字节)=》

                          b'x0cx00x00x00 x00x00x00x05x00x00x00'

        file=open("bytesFile.txt","wb")   #输入一个二进制文本,bytesFile.txt是文本的名字,

                           wb是二进制文本写入,rb是二进制文本读入

        file.write(bytesInt)                     #把bytesInt 写入bytesFile.txt里面

        file.close()         #关闭文件

        #好了,以上就是"struct.pack"的简单应用了。其他的类型我想大家都会举一反三的。

      2.struct.unpack

        import struct 

        file=open("bytesFile.txt","rb")     #我在这里打开一个二进制的文本,

                          我就把上面的bytesInt放进bytesFile.txt里面

        datas=file.read(4)                    #我在这里读file,因为int占四个字节,所以read(4),

        data=struct.unpack("i",datas)[0]  #里面参数与上面一样,不过多解释了,其中字节其实

                          也可以看成一个列表,所以我取第一个字节[0]

        print(data)                                         #打印出后 =》12

        file.close()            #每一次打开文件,记得关闭哦

      3.bytes,encode , decode

        s="世界"

        l=s.encode("utf-8")        #以utf-8的格式对s进行utf-8编码

        print(l)             # 打印出后 =》 b'xe4xb8x96xe7x95x8c'

        print(l.decode("utf-8"))      #打印出后 解码 =》世界

        print(bytes(s,"utf-8"))       #打印出后 把str转成字节格式,效果同encode=》

                               b'xe4xb8x96xe7x95x8c'

      4.pack的第一个属性值(转自官方:https://docs.python.org/3/library/struct.html)

    FormatC TypePython typeStandard sizeNotes
    x pad byte no value    
    c char bytes of length 1 1  
    b signed char integer 1 (1),(3)
    B unsigned char integer 1 (3)
    ? _Bool bool 1 (1)
    h short integer 2 (3)
    H unsigned short integer 2 (3)
    i int integer 4 (3)
    I unsigned int integer 4 (3)
    l long integer 4 (3)
    L unsigned long integer 4 (3)
    q long long integer 8 (2), (3)
    Q unsigned long long integer 8 (2), (3)
    n ssize_t integer   (4)
    N size_t integer   (4)
    e (7) float 2 (5)
    f float float 4 (5)
    d double float 8 (5)
    s char[] bytes    
    p char[] bytes    
    P void * integer   (6)

      

    ok,今天就到这了,后面还有更新哦(若有错误,请指正,谢谢哦):)

                    

        

    
    
  • 相关阅读:
    942. 增减字符串匹配
    116. 填充每个节点的下一个右侧节点指针
    剑指 Offer 35. 复杂链表的复制
    实验排序
    543. 二叉树的直径
    面试题 08.08. 有重复字符串的排列组合
    微信开发者工具
    打印机链接
    图片上下左右居中
    学习 视频网站
  • 原文地址:https://www.cnblogs.com/GaryNie/p/8358956.html
Copyright © 2011-2022 走看看