我无法从文件读取并指定某些if/else条件。我会尽力解释我的目标和我面临的问题。我正在处理一个应用程序的XML文件,并将XML解析为TSV。现在我已经阅读了TSV文件,我已经浏览了所有菜单,当我完成了子菜单,我必须返回到主菜单并转到下一个菜单并继续这样做。以下是应用程序的树状视图:
1 -> Main Menu
2 -> Broadband
3 -> Load and Save Profiles
4 -> Load Profile
5 -> Save Profile
6 -> Delete Profile
7 -> Interface
8 -> xDSL
10 -> Ethernet
11 -> SHDSL
12 -> xDSL Interface
13 -> xDSL Mode
14 -> MAC Address
15 -> Vectoring Mode
16 -> G.FAST
17 -> Auto Re-Sync
18 -> Seamless Rate Adaption
19 -> G.INP
20 -> Power Cut Back
21 -> ATM Type
22 -> Voip Interface ATM Type
23 -> Iptv Interface ATM Type
24
25 -> Ethernet Interface
26 -> Autonegotiation
27 -> Speed
28 -> Duplex Mode
29 -> SHDSL Interface
30 -> SHDSL Service
31 -> Side
32 -> Line Mapping
33 -> Bonding
34 -> Line Parameter
这是原始XML文件:
^{2}$我可以浏览菜单和子菜单,回到主菜单直到第6行。在那之后,我在努力做什么。问题在第7行,当用户选择xDSL
类型时,他应该跳转到菜单xDSL interface
(第12行),然后当他完成了xDSL Interface
的所有子菜单时,他应该返回到第10行并选择Ethernet
类型,然后跳到第25行并选择Ethernet Interface
,然后当他完成Ethernet Interface
的所有子菜单时,再次跳到第25行并选择{SHDSL
并像前面那样做。在
所以这就是我想做的。我正在从TSV文件中读取行,在我读取一行并找到一个特定的字符串之后,例如:xDSL
,我可以在这个循环中启动一个嵌套循环来检查以下行并转到xDSL Interface
,如下所示:
if list_title == "Interface":
for inner_record in testData.dataset(findFile("testdata","parsedXML.tsv")):
inner_label = testData.field(inner_record,"Label")
test.log("Running inner loop.")
if inner_label == "xDSL Interface":
break
else:
inner_label.strip()
if (here is the next if-loop that will work from the line where xDSL Interface was found)
在这里,Interface
在第7行中找到,然后当xDSL Interface
出现在第12行时,我中断for循环,转到下一个从第12行开始工作的if函数。但当它中断并启动下一个if函数时,它从第8行恢复,它不计算我在上一个if条件下在嵌套循环中所做的行strip。在
另外,我的下一个问题是,当我完成了所有的子菜单xDSL Interface
直到第23行,我想跳回到第10行到Ethernet
并且当找到这一行时,我想向前跳到第25行,然后像以前一样继续Ethernet Interface
。在
我通过以下方式对代码此时正在读取的文件行进行计数:
for lineno, line in enumerate(f, start=1):
我可以构建一个行开始位置(文件偏移量)的列表,然后使用file.seek(line_offsets[n])
返回第n行(从零开始计数)。但问题是我必须将这个file.seek
保存在一个if循环中,然后继续使用这个循环之外的另一个if循环。但我也面临类似的问题,当我跳过一行或想返回时,在嵌套循环中它是有效的,但如何从外部if循环继续呢?在
我的目标:
我想做一些嵌套的if循环,当文件读取xDSL
type时,if语句将搜索到包含xDSL interface的行(第12行),然后一直读到xDSL interface的所有子菜单,然后if语句将返回到第10行,当它找到字符串Ethernet
时,它将搜索以太网接口并转到第25行,然后当read函数遍历了以太网接口的所有子菜单时,他应该返回到第11行,搜索SHDSL,然后像之前那样做。在
如果有人想要一个简短的问题:
如何使用嵌套if循环跳过python中的行,然后使用外部循环继续从高级行读取?另外,如何使用嵌套的if循环返回python中的前一行,然后使用outside循环继续从前一行读取数据?在
目前没有回答
相关问题 更多 >
编程相关推荐