B
Brian Green
I am trying to create a ruby script that will search a maya ascii file
for specific text. The problem I'm running into is that it's running to
slow for the system at work. I know that all the information I need is
in the last 5% of the text file - but I haven't been able to figure out
a way to either jump to near the end, and then start search through
lines or even better iterating backwards through the file till I find
what I'm looking for... here is the code I'm currently using - which
works but slowly - any suggestions for how to speed this up would be
greatly appreciated!
require "FileUtils"
require "ftools"
def FindRenderLayers (root)
layersFile = []
dirLocation = root.gsub(/(\\)$/, '')
list = Dir.entries(dirLocation)
list.each do |file|
if file =~ /\.ma$/
fileName = root + file
layersFile.push file
File.open(fileName) do |file|
while line = file.gets
if line =~ /connectAttr
(\"renderLayerManager.rlmi\[[0-9]\]\")/
if $1 != "defaultRenderLayer"
editedLine = "-" + $1
layersFile.push editedLine
end
end
end
end
end
end
return layersFile
end
root = "C:\\Users\\Brian\\Documents\\Ruby\\"
puts FindRenderLayers(root)
for specific text. The problem I'm running into is that it's running to
slow for the system at work. I know that all the information I need is
in the last 5% of the text file - but I haven't been able to figure out
a way to either jump to near the end, and then start search through
lines or even better iterating backwards through the file till I find
what I'm looking for... here is the code I'm currently using - which
works but slowly - any suggestions for how to speed this up would be
greatly appreciated!
require "FileUtils"
require "ftools"
def FindRenderLayers (root)
layersFile = []
dirLocation = root.gsub(/(\\)$/, '')
list = Dir.entries(dirLocation)
list.each do |file|
if file =~ /\.ma$/
fileName = root + file
layersFile.push file
File.open(fileName) do |file|
while line = file.gets
if line =~ /connectAttr
(\"renderLayerManager.rlmi\[[0-9]\]\")/
if $1 != "defaultRenderLayer"
editedLine = "-" + $1
layersFile.push editedLine
end
end
end
end
end
end
return layersFile
end
root = "C:\\Users\\Brian\\Documents\\Ruby\\"
puts FindRenderLayers(root)