使用os.environ来计算和显示列表

时间:2014-04-07 10:37:32

标签: python list environment-variables maya

请原谅我,如果我的标题误导你,但我在尝试获取相应类别的列表时遇到问题,而我可以更改类别,它仍然保留上一类别选择中列表的值< / p>

category = os.environ['CAT']
item = os.environ['ITEM']

""" ezygate.Job.getItems is the code of the inhouse tool i'm using to derive the list of items """
itemList = ezygate.job.getItems({'Items': '%s'%category})

category = ['Shirts'] 
itemList = ['v-neck', 'round', 'long sleeve', ...] 

因此,当用户想要更改类别时,他们必须访问另一个ui来更改它(不是此编码的一部分),虽然os.environ['CAT']将相应更新,但itemList是错误的...例如:

category = ['Shorts']
itemList = ['v-neck', 'round', 'long sleeve', ...]

当我尝试os.environ.clear()时,它会搞砸我的Maya并且我收到以下错误:

# Error: CAT
# Traceback (most recent call last):
#   File "<maya console>", line 2, in <module>
#   File "/apps/Linux64/aw/maya2014/lib/python2.7/UserDict.py", line 23, in __getitem__
#     raise KeyError(key)
# KeyError: 'CAT # 

因此,如果不是category的一部分,os.environ ['ITEM']会清除itemsList吗? 我期待看看除了使用os.environ方法之外是否还有其他内部代码可以读取项目列表(这是我唯一知道的...)

1 个答案:

答案 0 :(得分:1)

看起来你有一个模块ezygate,你已经在内部制作了。在该模块中创建dictlist,具有以下结构:

cats = {'Shirt': ['v-neck', 'round', 'long sleeve']}

只要其他用户可以import ezygate,您就可以在那里访问相同的dict,而不是依赖os.environ

ezygate.cats['Shirt']

os.environ是存储在os模块中的字典,但没有理由不依赖另一个模块中的另一个字典。根据您的模块,可能跳出的时间超过ezygate,但重要的是,只要您需要依赖dict,就可以导入模块。