1. 程式人生 > >Python中的文件操作小記一

Python中的文件操作小記一

sig 另一個 type cut blog 文件操作 enc code 更新

  簡單的開個頭,最近在學習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
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,今天就到這了,後面還有更新哦(若有錯誤,請指正,謝謝哦):)

                

    

Python中的文件操作小記一