我正在尝试自动化一个过程,如果我们看到每月运行的虚拟机数量突然发生变化,就会发出警报。这是数据的样子
January.txt February.txt
Web Fleet Web Fleet
100 112
Proxy Fleet Proxy Fleet
25 22
Beta Fleet Beta Fleet
12 10
我基本上想要打开两个不同的文件,并让python将每行与两个文件之间的数字分开。从那里,我可以说"如果< = 1则报警"之类的事情。但我似乎无法弄清楚如何告诉它做两个不同文件之间的每一行。通常我会在bash中执行此操作,但我试图将整个过程保留在当前正在运行的python脚本中,该脚本当前生成文件并执行一些其他任务来获取此数据。
以下是我使用bash
进行处理的一种方式示例paste January.txt feburary.txt | awk 'NR%2==0' | awk '{ print $1 / $2 }'
编辑:数据始终处于相同的顺序,Web Fleet始终位于顶部,Proxy Fleet始终位于第二,依此类推。
答案 0 :(得分:1)
代码 -
with open('January.txt', 'r') as f1, open('February.txt', 'r') as f2:
for x, y in zip(f1.read().splitlines()[1::2], f2.read().splitlines()[1::2]):
print(float(x) / int(y))
输出 -
0.8928571428571429
1.1363636363636365
1.2
答案 1 :(得分:0)
预先读取两个文件的内容可能更简单,zip
将它们放在一起,然后一次迭代移动2行:
with open("jan.txt") as file1:
with open("feb.txt") as file2:
lines = zip(file1.readlines(), file2.readlines())
for line1, line2 in lines[1::2]:
val1 = float(line1.strip())
val2 = float(line2.strip())
print val1/val2
[1::2]
位表示从索引1开始,一次移动2个项目
不预先读取文件内容的替代实现:
with open("jan.txt") as file1:
with open("feb.txt") as file2:
while True:
file1.readline()
file2.readline()
line1 = file1.readline()
line2 = file2.readline()
if line1 == "" or line2 == "":
break
val1 = float(line1.strip())
val2 = float(line2.strip())
print val1/val2