【发布时间】:2017-05-11 14:42:37
【问题描述】:
我正在尝试逐行读取文件 (d:\mywork\list.txt) 并搜索该字符串是否出现在特定目录 (d:\new_work) 的任何文件中(一个接一个) .
如果存在于任何文件中(可能是一个或多个),我想从相应的文件中删除字符串 (car\yrui3,) 并保存相应的文件。
list.txt:
car\yrui3,
dom\09iuo,
id\byt65_d,
rfc\some_one,
desk\aa_tyt_99,
.........
.........
目录有多个文件:d:\new_work:
Rollcar-access.txt
Mycar-access.txt
Newcar-access.txt
.......
......
我的代码:
value=File.open('D:\\mywork\\list.txt').read
value.gsub!(/\r\n?/, "\n")
value.each_line do |line|
line.chomp!
print "For the string: #{line}"
Dir.glob("D:/new_work/*-access.txt") do |fn|
print "checking files:#{fn}\n"
text = File.read(fn)
replace = text.gsub(line.strip, "")
File.open(fn, "w") { |file| file.puts replace }
end
end
问题是,值没有按预期删除。另外,当我尝试打印该值时,text 为空。
【问题讨论】:
-
我们对您是新人还是有经验的人不感兴趣,我们希望得到充分研究、问得好、简洁的问题。我建议阅读“How To s The Smart Way”,因为它解释了如何与 SO 等社区合作。
-
你的任务有点像“XY Problem”。当您可能应该首先询问解决任务时,您正在询问您的实施。我建议重新考虑这个问题。这些文件代表什么?为什么数据分散在多个文件中?考虑使用数据库来存储文件的内容,您可以在其中快速搜索和删除。甚至 SQLite 也可以快速完成这项工作,并且可以使用 Sequel、Datamapper 或 Active Record 等 ORM 轻松完成。
标签: ruby