gpt4 book ai didi

ruby - 从 ruby​​ 文件中删除文本行

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:39 24 4
gpt4 key购买 nike

我有一个 txt 文件,每一行都有一系列字符串。我需要找到给定的字符串,将该字符串移动到另一个文件并从文件中删除该行。

移动到另一个文件是有效的,这是代码。

File.open('file_moved.txt', 'w') { |file| file.puts pick_random_line.to_i.to_s }

def pick_random_line
chosen_line = nil
File.foreach("file.txt").each_with_index do |line, number|
chosen_line = line if rand < 1.0/(number+1)
end
chosen_line
end

我有点不知道如何从另一个文件中删除该行。 Ruby 中删除具有匹配字符串的完整行的方法是什么?

最佳答案

像这样的东西怎么样?

lines = File.readlines('file.txt')

random_line = lines.shuffle.pop

File.open('file.txt', 'w') do |f|
f.write(lines.join(''))
end

File.open('random.txt', 'a') do |f|
f.write(random_line)
end

请注意,readlines 具有将整个文件读入内存的效果,但这也意味着您从文件中获得真正随机的样本。您的实现可能更倾向于文件末尾,因为您事先不知道有多少行。

与任何以这种方式进行操作的东西一样,如果该程序意外停止,文件可能会被截断的可能性很小。避免这种情况的通常方法是写入一个临时文件,然后在成功时重命名。更好的选择是使用数据库,甚至是像 SQLite 这样的嵌入式数据库。

关于ruby - 从 ruby​​ 文件中删除文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17002813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com