将数据从Excel导入Shelve(Python3)

时间:2018-02-25 20:39:02

标签: excel python-3.x

我遇到了一个Python模块,用于阅读Apple序列号并回馈产品类型。请参阅Mac Model Shelf

它非常强大,并且有大量的产品类型 - 有些东西可以追溯到90年代。对我来说有点矫枉过正。它给出的结果往往有点模糊(至少对于新的mac)。没有处理器类型,速度等。

我决定用我自己的序列号数据库和相应的机器类型重新编写它。

例如,为了示例,“W88010010P2”将返回“Black Macbook 2008 2GHz-PG 1001”。 'PG'代表Product Group,这是我用来在Filemaker数据库中查找相同mac的参考代码。

import shelve
databaseOfMacs = shelve.open("macmodelshelfNEW")
inputSerial = "W88010010P2"
modelCodeIsolatedFromSerial = ""

#extracting the model code. 3 digits for older macs, 4 for newer
#newer macs have 12 digits, older ones just 11
if len(inputSerial) == 12:
    modelCodeIsolatedFromSerial = inputSerial[-4:]
elif len(inputSerial) == 11:
 modelCodeIsolatedFromSerial = inputSerial[-3:]

#setting a key-value pair, for the sake of example
databaseOfMacs['0P2'] = "Black Macbook 2008 2GHz - PG 1001"

model = databaseOfMacs[modelCodeIsolatedFromSerial]
print model

这将产生输出......

Black Macbook 2008 2GHz - PG 1001

Process finished with exit code 0

在脚本中添加键值对是不切实际的。我已经开始构建一个Excel(xlsx)文件,其中包含模型代码的键值对及其实际描述。只有两列。

A    B
0P2  Black Macbook 2008 2GHz - PG 1001
G8WP MacBook Pro 205Ghz i7 (Retina, 15-inch, Mid 2015) - PG 786

我在网上搜索了SO,但找不到将这些数据放入搁置文件的简洁方法。建议的解决方案是将值导入字典,然后将字典导入到搁架中。我在第一部分时遇到困难,错误的'0'正在进入字典,基于python creating dictionary from excel ,stackoverflow

如果这可以简化为一步,它将改变一切!

感谢您提供的任何帮助。

更新

我想我已经把它弄清楚了......只是将excel数据放到了货架上......

import pandas as pd
import shelve

excelDict = pd.read_excel('serials_and_models.xlsx', header=None, index_col=0, squeeze=True).to_dict()
excelMacDataBaseShelve = shelve.open("excelMacDataBaseShelve")
excelMacDataBaseShelve.update(excelDict)

# to verify all is well
for key in excelMacDataBaseShelve:
    print(key, excelMacDataBaseShelve[key])

关于货架的好处是,我可以随时更新excel文件,当我需要通过python脚本检索一些数据时,它将始终是最新的。

如果有人能够指出我做错了或者可能有所改进的事情,请发表评论!!

0 个答案:

没有答案