python3.6解析二进制文件
import pickle
with open('ODMR_ODMR.pys','rb')as fp:
#open的是需要解析的二进制文件,rb是以二进制方式打开
with open('b_frequency.txt', 'w+', newline='') as f2:
#此处open的是你需要把它保存到txt文件的文件名 ‘w’是写入的意思
a = pickle.load(fp, encoding='bytes') #将obj对象序列化存入已经打开的file中。
print(a) #查看你所解析出来的文件内容
c = a[b'frequency']
#选取你所想要保存下来的内容,解析出来是字典,[]中是键的名称,得到的c是键值
c = str(c) #因为写入txt只能是str类型,所以将numpy值转化为string
f2.write(c) #写入txt文件
有些文件存储的是键值,可以先print打印出来,查看你需要哪些内容,再对需要的内容进行保存
将其写入excel文件
import pickle
import csv
with open('rabi_pg_2ns.pys','rb')as fp: #open的是需要解析的二进制文件,rb是以二进制方式打开
a = pickle.load(fp, encoding='bytes') #将将obj对象序列化存入已经打开的file中。
print(a) #查看你所解析出来的文件内容
counts = a[ b'measurement'][b'tau']
#选取你所想要保存下来的内容,解析出来是字典,[]中是键的名称,得到的c是键值,
#多层则像代码所示,套[]层层选出即可
csvfile = open("rabi_pg_2ns.csv", 'wt', encoding="UTF8", newline='')
#"rabi_pg_2ns.csv"是你想要保存的excel文件名
writer = csv.writer(csvfile, delimiter=",")
header = ['tau','spin_state','spin_state_error', 'contrast', 'pi']
# header 是excel文件第一行的标题,按你自己的顺序写下即可
csvrow1 = []
csvrow2 = []
csvrow3 = []
csvrow4 = []
# 你希望有几列数据就创建几个csvrow 即可
for i in range(len(counts)):
#向每列添加你所需要的数据
csvrow1.append(counts[i])
csvrow2.append(a[b'second_fit'][ b'spin_state'][i])
csvrow3.append(a[b'second_fit'][ b'spin_state_error'][i])
# csvrow4.append(a[b'__doc__'][i][2])
writer.writerow(header) #先向文件写入标题栏
writer.writerows(zip(csvrow1, csvrow2, csvrow3)) #再向文件打包写入每列数据
csvfile.close()