python筆記三

# 數據讀寫不一定是文件,也可以在內存中讀寫   
# StringIO就是在內存中讀寫str 

from io import StringIO
f = StringIO() # 要把str寫入StringIO,我們需要先創建一個StringIO
f.write('leyi')
print(f.getvalue()) # getvalue()方法用於獲得寫入後的str


from io import StringIO
f = StringIO('hello world!')
s = f.readlines()
print(s) # ['hello world!']


# BytesIO
# StringIO操作的只能是str,如果要操作二進制數據,就需要使用BytesIO  
# BytesIO實現了在內存中讀寫bytes,我們創建一個BytesIO,然後寫入一些bytes
from io import BytesIO
f = BytesIO()
f.write('我是誰'.encode('utf-8'))
print(f.getvalue()) # b'\xe6\x88\x91\xe6\x98\xaf\xe8\xb0\x81'
print(f.getbuffer()) # <memory at 0x1089aaa10>


import os
print(os.name) # posix
print(os.environ) # 查看環境變量
print(os.environ.get('PYCHARM_DISPLAY_PORT'))

print(os.path.abspath('.')) # 查看當前目錄的絕對路徑
# os.mkdir(os.path.join(os.path.abspath('.'), 'test')) # 在當前目錄創建一個目錄

print(os.path.join('./111/222/333', '444.txt')) # 拼接路徑 ./111/222/333/444.txt
print(os.path.split('./111/222/333.txt')) # 拆分路徑 ('./111/222', '333.txt')
print(os.path.splitext('./xxx/xxx/xx.txt')) # 根據擴展名進行拆分 ('./xxx/xxx/xx', '.txt')

os.rename('xxx.txt', 'yyy.txt') # 重命名文件 
os.remove('xxx.txt') # 刪除文件   

# 查找當前目錄所有的txt文件    
import os
for x in os.listdir('.') :
    if (os.path.isfile(x) and os.path.splitext(x)[1] == '.txt'):
        print(x)

# 查找當前目錄所有的目錄    
for x in os.listdir('.') :
    if (os.path.isdir(x)):
        print(x)


# 把變量從內存中變成可存儲或傳輸的過程稱之爲序列化   
import pickle    
d = {'aa' : 111, 'bb': 2222}    
print(pickle.dumps(d))      
# b'\x80\x03}q\x00(X\x02\x00\x00\x00aaq\x01KoX\x02\x00\x00\x00bbq\x02M\xae\x08u.'

# pickle.dumps()方法把任意對象序列化成一個bytes
# pickle.dump()直接把對象序列化後寫入一個file-like Object

import pickle
d = {'aa' : 111, 'bb': 2222}
print(pickle.dumps(d))
bb = pickle.dumps(d)
print(pickle.loads(bb)) 
with open('./b.txt', 'wb') as f:      
    pickle.dump(d, f)    
with open('./b.txt', 'rb') as f2:    
    print(pickle.load(f2))     

JSON和Python內置的數據類型對比:


import json
d = {'aa': 111, 'bb': 222}
d2 = dict(aa = 111, bb = 222)
print(type(json.dumps(d)))
print(type(json.dumps(d2)))
print(type(json.loads(json.dumps(d))))
print(type(json.loads(json.dumps(d2))))

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章