Python 在两个文件之间每隔一行分割一行
我目前正在尝试自动化一个过程,如果我们看到每月运行的虚拟机数量发生突然变化,它会提醒我。下面是数据的样子Python 在两个文件之间每隔一行分割一行,python,bash,division,Python,Bash,Division,我目前正在尝试自动化一个过程,如果我们看到每月运行的虚拟机数量发生突然变化,它会提醒我。下面是数据的样子 January.txt February.txt Web Fleet Web Fleet 100 112 Proxy Fleet Proxy Fleet 25 22 Beta Fleet
January.txt February.txt
Web Fleet Web Fleet
100 112
Proxy Fleet Proxy Fleet
25 22
Beta Fleet Beta Fleet
12 10
我基本上想打开两个不同的文件,让python在两个文件之间用数字分隔每一行。从那里,我可以说“如果代码-
输出-
0.8928571428571429
1.1363636363636365
1.2
可能更简单的方法是先读取两个文件的内容,
zip
将它们放在一起,然后一次迭代移动两行:
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
您的文件行是否总是匹配,或者您是否必须让您的代码使其匹配?如果它们已经匹配,我怀疑
zip
将在开箱即用的情况下完成您最想做的事情。它们总是匹配。Python脚本按设置的顺序一次执行一个查询,以确保。仅供参考,您的示例代码可以写成:>粘贴一月.txt二月.txt | awk'NR%2==0{print$1/$2}'
或awk'NR==FNR{a[NR]=$0;next}FNR%2==0{print a[FNR]/$1}'jan.txt二月.txt
如果他在使用python 2.7,他需要一个浮点除法,否则他会得到一个整数答案…@pekapa编辑它。现在它可以同时使用python 2和python 3。
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
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