首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:循环不会中断

Python:循环不会中断
EN

Stack Overflow用户
提问于 2018-04-17 11:32:26
回答 2查看 1.5K关注 0票数 1

有问题的打破循环。我想在它到达词尾的时候打破它。希望你能帮我,我在这段代码中遗漏了什么。谢谢。

代码语言:javascript
复制
def y():
    with open('test.conf', 'r') as rf:
        x = list()
        for line in rf:
            if 'config system global' in line:
                x.append('config system global\n')
                while True:
                    x.append(rf.__next__())
                    if 'end\n' in line:
                        break

                    with open('test.txt', 'w') as wf:
                        wf.writelines(x)


config system global
    set admin-maintainer disable
    set admin-scp enable
    set admin-server-cert "Fortinet_Firmware"
    set admintimeout 15
    set anti-replay disable
    set fgd-alert-subscription advisory latest-threat
    set gui-dynamic-routing enable
    set gui-multiple-utm-profiles enable
    set gui-replacement-message-groups enable
    set gui-sslvpn-personal-bookmarks enable
    set gui-sslvpn-realms enable
    set gui-wireless-opensecurity enable
    set hostname "XXXXXX"
    set internal-switch-mode interface
    set revision-backup-on-logout enable
    set revision-image-auto-backup enable
    set strong-crypto enable
    set tcp-timewait-timer 120
    set timezone 80
    set vdom-admin enable
end
config system accprofile
    edit "prof_admin"
        set admingrp read-write
        set authgrp read-write
        set endpoint-control-grp read-write
        set fwgrp read-write
        set loggrp read-write
        set mntgrp read-write
        set netgrp read-write
        set routegrp read-write
        set sysgrp read-write
        set updategrp read-write
        set utmgrp read-write
        set vpngrp read-write
        set wanoptgrp read-write
        set wifi read-write
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-17 12:20:44

问题是内部while循环:

代码语言:javascript
复制
while True:
    x.append(rf.__next__())
    if 'end\n' in line:
        break

它是一个无限循环,因为line在循环中不会改变。它可能以StopIteration异常结束,除非它被捕获

适当的守则是:

代码语言:javascript
复制
while True:
    line = rf.__next__()
    if 'end\n' in line:
        break
    x.append(line)

根据是否要将end保存在块中,在测试之前或之后追加end

和缩进:

代码语言:javascript
复制
with open('test.txt', 'w') as wf:
    wf.writelines(x)

在与另一个with块相同的级别上,否则文件将在每次迭代时编写。

票数 0
EN

Stack Overflow用户

发布于 2018-04-17 11:36:47

尝试使用re module

Ex:

代码语言:javascript
复制
import re        
for line in s.split("\n"):
    if re.match('end', line):
        break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49876947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档