计算两个文件之间的商并将其写入另一个文件

时间:2017-08-17 10:10:13

标签: python file between operations

使用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

这是要走的路还是我应该采用不同的方法?非常感谢答案。

1 个答案:

答案 0 :(得分:0)

看起来你的文件各有一行。因此,获取每个文件中数字的最简单方法是只读取文件的整个内容,删除任何不需要的字符,然后拆分分隔浮点值的空白。拆分空格会为您提供strings的列表,然后您可以强制转移到floats。此时,您应该有两个浮点值列表,即当您使用zipmap函数的组合来执行除法运算时。以下是一个例子:

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)+" ")

我希望这证明有用。