计算两个文件之间的商并将其写入另一个文件
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
。此时,您应该有两个浮点值列表,那就是当您使用 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)+" ")
希望这有用。
使用 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
。此时,您应该有两个浮点值列表,那就是当您使用 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)+" ")
希望这有用。