Have 2 files with hex values
file1.txt
0x42528566923Bd44c 0x55A5c6564546b54d 0x3266CD6565e566aa
file2.txt
0x3256AA323ab 0x669bbbb544c 0xa2545bcca55
using python i am trying to subtract line 1 of file1.txt from line 1 of file2.txt and so on. My codes
with open("file1.txt", "r") as f1:
line1 = f1.readline().strip()
def key1(line1):
x = int(line1, 16)
return (x)
with open("file2.txt", "r") as f2:
line2 = f2.readline().strip()
def key2(line2):
y = int(line2, 16)
return (y)
def add(f1, f2):
P = key1(line1)
Q = key2(line2)
R = P - Q
hx = hex(R).zfill(10)
print(hx+"n")
add(f1, f2)
but I am only able to get first line subtract value, not getting all 3 lines value.
Advertisement
Answer
The problem is with: line1 = f1.readline().strip() and line2 = f2.readline().strip(). Since you are reading the first line only from each files, you have a single result. You need to do it for all the lines, not just the first one.
Read all the lines, and strip each of them:
with open("file1.txt", "r") as f1:
line1 = [line.strip() for line in f1.readlines()]
with open("file2.txt", "r") as f2:
line2 = [line.strip() for line in f2.readlines()]
Now, modify the add function signature:
def add(line1, line2):
P = key1(line1)
Q = key2(line2)
R = P - Q
hx = hex(R).zfill(10)
print(hx+"n")
The key1 and key2 functions are fine, so they don’t need to be modified.
Now, call add for each pair of lines from the files, iterating them parallely with zip:
for i,j in zip(line1, line2):
add(i, j)
OUTPUT:
0x425282412798b0a1 0x55a5bfec898b6101 0x3266c34020289c55