将两个文件之间的每一行分开

Divide Every Other Line Between Two Files

我目前正在尝试使一个过程自动化,如果我们看到 VM 数量运行 月环比突然变化,它会向我发出警报。这是数据的样子

January.txt               February.txt

Web Fleet                 Web Fleet
100                       112
Proxy Fleet               Proxy Fleet
25                        22
Beta Fleet                Beta Fleet
12                        10

我基本上想打开这两个不同的文件,并 python 在这两个文件之间用数字分隔每一行。从那里,我可以说 "if <= 1 then alarm" 之类的话。但我似乎无法弄清楚如何告诉它在两个不同文件之间每隔一行执行一次。通常我会在 bash 中执行此操作,但我试图将整个过程保留在当前 运行 python 脚本中,该脚本当前生成文件并执行一些其他任务以获取此数据。

这是我使用 bash

的一种方式示例
paste January.txt feburary.txt | awk 'NR%2==0' | awk '{ print  /  }'

编辑:数据总是以相同的顺序排列,Web Fleet 总是排在最前面,Proxy Fleet 总是排在第二,依此类推。

代码-

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

预先读取两个文件的内容可能更简单,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