Ruby - 如何将两个文件的数字相减并将结果保存在其中一个文件的指定位置?
Ruby - How to subtract numbers of two files and save the result in one of them on a specified position?
我有 2 个 txt 文件,其中包含不同的字符串和数字,用 ;
分割
现在我需要减去
((file1 中位置 2 上的数字) - (file2 中位置 25 上的数字)) = 结果
现在我想用结果替换(文件 1 中位置 2 上的数字)。
我在下面尝试了我的代码,但它只在文件末尾附加了数字,而不是附加的计算结果。
def calc
f1 = File.open("./file1.txt", File::RDWR)
f2 = File.open("./file2.txt", File::RDWR)
f1.flock(File::LOCK_EX)
f2.flock(File::LOCK_EX)
f1.each.zip(f2.each).each do |line, line2|
bg = line.split(";").compact.collect(&:strip)
bd = line2.split(";").compact.collect(&:strip)
n = bd[2].to_i - bg[25].to_i
f2.print bd[2] << n
#puts "#{n}" Only for testing
end
f1.flock(File::LOCK_UN)
f2.flock(File::LOCK_UN)
f1.close && f2.close
end
使用这样的东西:
lines1 = File.readlines('file1.txt').map(&:to_i)
lines2 = File.readlines('file2.txt').map(&:to_i)
result = lines1.zip(lines2).map do |value1, value2| value1 - value2 }
File.write('file1.txt', result.join(?\n))
此代码加载内存中的所有文件,然后计算结果并将其写入第一个文件。
仅供参考:如果您想使用您的代码,只需将结果保存到其他文件(即 result.txt
),最后将其复制到原始文件。
我有 2 个 txt 文件,其中包含不同的字符串和数字,用 ;
分割现在我需要减去 ((file1 中位置 2 上的数字) - (file2 中位置 25 上的数字)) = 结果 现在我想用结果替换(文件 1 中位置 2 上的数字)。 我在下面尝试了我的代码,但它只在文件末尾附加了数字,而不是附加的计算结果。
def calc
f1 = File.open("./file1.txt", File::RDWR)
f2 = File.open("./file2.txt", File::RDWR)
f1.flock(File::LOCK_EX)
f2.flock(File::LOCK_EX)
f1.each.zip(f2.each).each do |line, line2|
bg = line.split(";").compact.collect(&:strip)
bd = line2.split(";").compact.collect(&:strip)
n = bd[2].to_i - bg[25].to_i
f2.print bd[2] << n
#puts "#{n}" Only for testing
end
f1.flock(File::LOCK_UN)
f2.flock(File::LOCK_UN)
f1.close && f2.close
end
使用这样的东西:
lines1 = File.readlines('file1.txt').map(&:to_i)
lines2 = File.readlines('file2.txt').map(&:to_i)
result = lines1.zip(lines2).map do |value1, value2| value1 - value2 }
File.write('file1.txt', result.join(?\n))
此代码加载内存中的所有文件,然后计算结果并将其写入第一个文件。
仅供参考:如果您想使用您的代码,只需将结果保存到其他文件(即 result.txt
),最后将其复制到原始文件。