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)
Format | C Type | Python type | Standard size | Notes |
---|---|---|---|---|
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中的文件操作小記一