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'\x0c\x00\x00\x00\n\x00\x00\x00\x05\x00\x00\x00'

    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'\xe4\xb8\x96\xe7\x95\x8c'

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

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

                           b'\xe4\xb8\x96\xe7\x95\x8c'

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

FormatC TypePython typeStandard sizeNotes
xpad byteno value  
ccharbytes of length 11 
bsigned charinteger1(1),(3)
Bunsigned charinteger1(3)
?_Boolbool1(1)
hshortinteger2(3)
Hunsigned shortinteger2(3)
iintinteger4(3)
Iunsigned intinteger4(3)
llonginteger4(3)
Lunsigned longinteger4(3)
qlong longinteger8(2), (3)
Qunsigned long longinteger8(2), (3)
nssize_tinteger (4)
Nsize_tinteger (4)
e(7)float2(5)
ffloatfloat4(5)
ddoublefloat8(5)
schar[]bytes  
pchar[]bytes  
Pvoid *integer (6)

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

                

 

 

 

 

 

 

 

 

 

 

    

 

转载于:https://www.cnblogs.com/GaryNie/p/8358956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值