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))))

  

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