我正在编写一个非常简单的脚本来清理几十万个小 XML 文件。我当前的方法是遍历目录并(对于每个文件)读取文件,用于String::gsub!
进行所有更改(不确定这是否最好),然后将新内容写入文件。我的代码如下所示:
Dir.entries('.').each do |file_name|
f = File.read( file_name )
f.gsub!( /softwareiconneedsshine>(.|\s)*<\/softwareiconneedsshine>/i, '' )
f.gsub!( /<rating>(.|\s)*<\/rating>, '' )
f.gsub!( /softwareIdentifiers>/, 'version_history>' )
#some more regex's
File.open( file_name, 'w' ) { |w| w.write(f) }
end
这一切看起来都很好而且很漂亮,但是由于某种原因(我一生都无法弄清楚),程序似乎随意地挂在gsub!
与前两个相似的命令处。但是,它会随机挂起(但仅在那些点上)。有时它有效,其他时候只是挂起。我真的不明白为什么它有时会起作用,但其他时候却不行???
任何帮助是极大的赞赏!!