gpt4 book ai didi

python - 无法从最后一个 elif 获得输出

转载 作者:行者123 更新时间:2023-12-04 18:55:22 25 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












这个问题似乎与 help center 中定义的范围内的编程无关。 .


2年前关闭。







Improve this question




我正在尝试遍历目录中的一堆 .xml 文件。

为此,我编写了一个 python 脚本:

#!/usr/bin/python3.5

import os
import glob

pathToDirectory = '/home/anton/Documents/Repo_from_GitHub/ResiShared/templates/'

for filename in os.listdir(pathToDirectory):
file = open(pathToDirectory.__add__(filename), "r")
count = 0
for line in file:
if line.__contains__('xmlns="http://xml.juniper.net/xnm/1.1/xnm"') \
| line.__contains__('xmlns="http://tail-f.com/ned/cisco-ios-xr"') \
| line.__contains__('xmlns="http://tail-f.com/ned/arista-dcs"'):
++count
elif line.__contains__('tags="replace"'):
--count
elif (line.__contains__('</config>') \
| line.__contains__('</config-template>')) & count > 0:
print ('There are ' + str(count) + ' tags="replace" missing in the ' + file.name)

它可以正常工作,没有发现任何错误,但我也没有从最后一个“elif”中得到任何输出,但它绝对应该是。

以下是 .xml 文件的示例:
xml file example

更新:
我在这里不需要任何类型的 XML 解析器,核心 Python 功能就足够了。

最佳答案

python不支持++--运营商。因此,当您执行 ++count--count count 的值没有任何改变,count > 0总是 False .

请注意,它不会引发异常,因为它是有效代码。 ++count实际上是应用一元运算符 +连续两次(即 +(+count) )。 -- 相同(-(-count))。

给定 xml 示例文件,您期望 line.__contains__('</config-template>')) & count > 0True但事实并非如此。

说了这么多——我同意@King'sjester 的评论,以及为什么你调用像 __contain__() 这样的 dunder 方法直接地?它使代码的可读性降低,而且恕我直言,至少可以这么说。我会接受@mannojlds 的建议来寻找更多的pythonic 工具来解析xml 文件。

>>> line = 'spam'
>>> count = 0
>>> line.__contains__('eggs') & count > 0
False

已编辑以包括对一元运算符的解释。

关于python - 无法从最后一个 elif 获得输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57722871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com