gpt4 book ai didi

python - 在文件行中查找匹配项,然后转到下一个文件

转载 作者:行者123 更新时间:2023-12-01 09:18:37 24 4
gpt4 key购买 nike

我是 python 新手,我尝试编写一个脚本来循环遍历/home 目录中的所有 .txt 文件,并迭代每个 .txt 文件中的行,看看是否可以找到匹配项(如果是)确实如此,它应该移至下一个文件。如果在整个文件中找不到匹配项,则报告它。

我拥有的代码:

strname = "ntpq -p"

for file in glob.glob("/home/xxx/*.txt"):
with open(file, 'rb') as f:
iFoundTheLine = 0
for line in f:
line = line.rstrip()
id = line.split(b"|")[0]

if strname in line:
iFoundTheLine = 1
print ("%s is ok" % id)
break

if iFoundTheLine == 0:
print ("Problem with NTP%s" % id)

我得到的结果:

srv29393 没问题

NTP 问题

srv29494 没问题

NTP 问题

srv29399 没问题

srv29493 没问题

我正在寻找的预期结果:

srv29393 没问题

NTP srv1234 出现问题

srv29494 没问题

NTP srv2345 出现问题

srv29399 没问题

srv29493 没问题

示例行:

srv29393|06/23/18|05:32:02|ps -eo 用户、pid、ppid、启动、etimes、cmd | egrep -v [\w<|>无人 22972 21597 03:06:12 8767 (dnsserver)

srv29393|06/23/18|05:32:02|1529746322|ps -eo 用户、pid、ppid、启动、etimes、cmd | egrep -v [\w<|>无人 22973 21597 03:06:12 8767 (dnsserver)

srv29393|06/23/18|05:32:02|ps -eo 用户、pid、ppid、启动、etimes、cmd | egrep -v [\w<|>无人 22974 21597 03:06:12 8767 (dnsserver)

srv29393|06/23/18|05:32:02|1529746322|/usr/sbin/ntpq -p<|>*1.1.1.11 11.11.11.11 3 u 1055 1024 377 719.042 -0.625 0.016

srv29393|06/23/18|05:32:02|1529746322|/usr/sbin/ntpq -p<|>+2.2.2.11 12.12.12.11 3 u 1049 1024 377 824.784 0.707 0.121

对于那些有 NTP 问题的人来说,它丢失了“id”。有人可以帮忙/建议吗?

最佳答案

你有一个小问题。您正尝试在无法访问 idfor 循环之外打印 id。因此,它应该放在循环内。

此外,由于这个原因,您没有理由拥有 iFoundTheLine 变量,因为它是不必要的。

编辑: for line in f 应该是 for line in f.readlines()

对代码进行一些重构:

import glob
strname = "ntpq -p"

for File in glob.glob("/home/xxx/*.txt"):
with open(File, 'r', encoding='utf-8') as f:
for line in f.readlines():
line = line.rstrip()
id = line.split("<|>")[0]

if strname in line:
print ("%s is ok" % id)
break

else:
# Since, `id` is accessible inside the loop
print ("Problem with NTP%s" % id)

由于文本文件包含特殊字符,我建议对文件使用 UTF-8 编码,而不是以二进制方式访问它,因为它使文件交互更容易。

关于python - 在文件行中查找匹配项,然后转到下一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51000788/

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