使用Python,我有两个大的(同样长的)文件,其中的数字除以空格:
0.11158E-13 0.11195E-13 0.11233E-13 ...#file1
0.11010E-13 0.11070E-13 0.11117E-13 ...#file2
值存在差异,我希望得到相对差异,并将它们以相同的格式写入第三个文件。 我可以为第一个值执行此操作,但在进行ITERATING过程时会遇到问题(以便计算所有值)。
这是代码(我是python代码的新手):
with open('ex1.idl', 'r') as f1: #this opens the first file
with open('ex2.idl', 'r') as f2: #this opens the second file
f1 = f1.read(13) # reading the length of the value (ex1.idl)
f2 = f2.read(13) # reading the length of the value (ex2.idl)
f1 = float(f1) #assigning the numerical value for the string
f2 = float(f2) #assigning the numerical value for the string
c = f1/f2 #calculating relative values
with open('ex3.txt', 'w') as f3: #opening the new file and
f3.write(str(c)) #writing into the new file as a string
这是要走的路还是我应该采用不同的方法?非常感谢答案。
答案 0 :(得分:0)
看起来你的文件各有一行。因此,获取每个文件中数字的最简单方法是只读取文件的整个内容,删除任何不需要的字符,然后拆分分隔浮点值的空白。拆分空格会为您提供strings
的列表,然后您可以强制转移到floats
。此时,您应该有两个浮点值列表,即当您使用zip
和map
函数的组合来执行除法运算时。以下是一个例子:
with open('ex1.idl') as f1, open('ex2.idl') as f2:
with open('ex3.txt', 'w') as f3:
f1 = map(float, f1.read().strip().split())
f2 = map(float, f2.read().strip().split())
for result in map(lambda v: v[0]/v[1], zip(f1, f2)):
# This writes the results all in one line
# If you wanted to write them in multiple lines,
# then you would need replace the space character
# with a newline character.
f3.write(str(result)+" ")
我希望这证明有用。