0

我有一个快速而肮脏的构建脚本,需要更新一个小的 xml 配置文件中的几行。由于文件太小,我使用一个公认的低效过程来更新文件,以保持简单:

def hide_osx_dock_icon(app):
    for line in fileinput.input(os.path.join(app, 'Contents', 'Info.plist'), inplace=True):
        line = re.sub(r'(<key>CFBundleDevelopmentRegion</key>)', '<key>LSUIElement</key><string>1</string>\g<1>', line.strip(), flags=re.IGNORECASE)

    print line.strip()

这个想法是找到<key>CFBundleDevelopmentRegion</key>文本并在其前面插入LSUIElement内容。我正在另一个领域做这样的事情,它工作正常,所以我想我只是错过了一些东西,但我没有看到它。

我究竟做错了什么?

4

1 回答 1

0

您只打印最后一行,因为您的print语句位于 for 循环之外:

for line in fileinput.input(os.path.join(app, 'Contents', 'Info.plist'), inplace=True):
    line = re.sub(r'(<key>CFBundleDevelopmentRegion</key>)', '<key>LSUIElement</key><string>1</string>\g<1>', line.strip(), flags=re.IGNORECASE)

print line.strip()

缩进该行以匹配上一行:

for line in fileinput.input(os.path.join(app, 'Contents', 'Info.plist'), inplace=True):
    line = re.sub(r'(<key>CFBundleDevelopmentRegion</key>)', '<key>LSUIElement</key><string>1</string>\g<1>', line.strip(), flags=re.IGNORECASE)

    print line.strip()
于 2013-06-20T12:18:58.693 回答