Loading csv giving error
-
hi guys I am trying to compare some data so I create one file name called "Price_lookup" in notepad then saved in plugin folder "Price_lookup.csv".
Price_lookup.csv contain like below"PARTNO", "PRICE"
600157,402.20
600163,424.16
600169,445.00
600175,468.96
600181,492.01
600187,516.69then I wrote small ruby script for testing. when I start the sketchup It's gives an error as follows "Error Loading File CSV_Test.rb no such file to load -- csv". any idea what I am doing wrong here???? thank you
here is my code.
<span class="syntaxdefault"> <br />require </span><span class="syntaxstring">'sketchup.rb'<br /></span><span class="syntaxdefault">require </span><span class="syntaxstring">'csv'<br /><br /></span><span class="syntaxdefault">def csv_Test<br /> <br /> model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br /> ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities<br /> <br /> csv_text </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">read</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Price_lookup.csv'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> csv </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> CSV</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">parse</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">csv_text</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">headers </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault"> result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PARTNO'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'600181'</span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxstring">"You Output #{result}"<br /></span><span class="syntaxdefault"> end<br />end<br /><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $csv_Test_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"CSV_TEST"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> csv_Test </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br /> <br /> $csv_Test_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />end<br /></span>
-
Miss out the
require 'csv'
it does nothing and just causes an error... You have no file called 'csv' -
When I took out require 'csv'nothing happening on sketchup. suppose to diplay message You output 492.01 but when I open ruby console I got error It says like this
Error: #<Errno::ENOENT: No such file or directory - Price_lookup.csv>
C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:9:inread' C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:9:in
csv_Test'
C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:20but I have Price_lookup.csv file in plugin folder what could be problem here???
-
You can NOT just assume it'll find the file.
TypingDir.pwd
in the Ruby Console will return the current working directory.
IF by good luck it is Plugins then the csv file will be found... but IF it is NOT then it won't be found !
So either useDir.chdir(path_to_plugins)
OR specify the full path to the csv file in the code rather than just giving its name...To find the folder that the current script has loaded from use:
folder=File.dirname(__FILE__)
Then to set the csv file use:
csvfile=File.join(folder, 'Price_lookup.csv')
Do some tests in the Ruby Console with snippets before trying the whole code block, that way you'll move forward is small steps, rather than rushing into a multiple pile-up...
-
Thank you so much TIG for you response. I tried the way you said but It gives an error on ruby console like this
Error: #<Errno::ENOENT: No such file or directory - Price_lookup.csv>
C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:24:inread' C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:24:in
csv_Test'
C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:35here is the code help me please.
<span class="syntaxdefault"><br /> require </span><span class="syntaxstring">'sketchup.rb'<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># require 'csv'<br /><br /></span><span class="syntaxdefault"> def csv_Test<br /> <br /> model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br /> ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities<br /> folder</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">dirname</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">__FILE__</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> csvfile</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">folder</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Price_lookup.csv'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> csv_text </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">read</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Price_lookup.csv'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> csv </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> CSV</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">parse</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">csv_text</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">headers </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault"> result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PARTNO'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'600181'</span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxstring">"You Output #{result}"<br /></span><span class="syntaxdefault"> end<br /> end<br /><br /> if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $csv_Test_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"CSV_TEST"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> csv_Test </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br /> <br /> $csv_Test_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br /> end<br /></span>
-
The FILE works if you run the code from the .rb file loading.
The way you have it set should work if the file 'Price_lookup.csv' is in the same folder as the .rb...
You code has an error:
csv_text = File.read('Price_lookup.csv')
should be say
csv_text = IO.read(csvfile)
giving you an array of the lines.I'm not sure about how you are parsing the file data you read in...
BUT once you successfully get the data in, then temporarily 'output' it to the opened Ruby Console to check it's as you expect, with:
puts csv_text
and showing hidden characters like \n etc
p csv_text
added in after the data is read-in...
Advertisement