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

Calculating the quotient between two files and writing it into another file

使用 Python,我有两个大的(等长的)文件,其中的数字用空格分隔:

0.11158E-13 0.11195E-13 0.11233E-13 ... # 文件 1

0.11010E-13 0.11070E-13 0.11117E-13 ... # file2

值存在差异,我想获取相对差异并将它们以相同的格式写入第三个文件。 我可以为第一个值做到这一点,但在迭代过程时遇到问题(以便计算所有值)。

这是代码(我是 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

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

看起来你的文件各占一行。因此,获取每个文件中的数字的最简单方法是只读取文件的全部内容,去除任何不需要的字符,然后在 whitespace 上拆分,分隔浮点值。在 space 上拆分将为您提供 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)+" ")

希望这有用。