1

我正在为我的网络构建一个版本控制模块,这就是我目前所拥有的:

import os, plistlib
def cyberduck():
    path=('/Applications/Cyberduck.app/Contents/Info.plist')
    pl = plistlib.readPlist(path)
    pl['key']=0
        for key in pl.values():
            if (key=='4.2.1'):
                print("We're good!")
            else:
                print("No good")
                import cyberduck_install

循环将找到版本字符串('4.2.1'),但也会找到所有非版本字符串。如何对循环进行编码以便如果 ('4.2.1')​​ 存在它将返回 true 并且仅打印 ("We're good!") 并且如果 ('4.2.1')​​ 在任何地方都不存在,它将返回false 并且只打印一次(“不好”)?

4

2 回答 2

5

我错过了什么吗?这就是你想要的:

if '4.2.1' in pl.values():
   print ("We're good!")
else:
   print ("No good")
于 2012-06-20T03:30:48.963 回答
0

出于各种充分的理由,happydave 的回答几乎可以肯定是您的最佳选择。但是,纯粹为了完整起见,对问题中代码的这种轻微修改将起作用:

for key in pl.values():
    if (key=='4.2.1'):
        print("We're good!")
        break
else:
    print("No good")

这是有效的,因为 Python 循环(forwhile允许一个else:子句,当你从循环的末尾掉下来时触发,但如果你用break.

于 2012-06-20T03:41:40.987 回答