[SOLVED] Macro + Path = Problem
Q-Dog
New Altair Community Member
Hi there,
I've got a problem modifying a path using "Generate Macro".
In the "File Loop" operator you get one (actually two) macro pointing the a folder (file_path and parent_path). If you want to modify this macro using "Generate Macro" you get a syntax error.
Example: suffix("%{parent_path}",10)
The problem is the backslash (\) in the path which will be interpreted wrong, but you can't escape it.. or can you?
Background:
I want to use the "File Loop" operator to read in a number of csv files in different subdirectories and store them in their respective folder.
Example:
"...\2012-05-02\file1.csv" ---> "...\myRepository\2012-05-02\file1.ioo"
"...\2009-10-31\file2.csv" ---> "...\myRepository\2009-10-31\file2.ioo"
Therefore I need the current directory (relative path), which I unfortunately isn't provided in "File Loop". Hence I tried to modify the macro "parent_path" (absolute path), which will lead to the error described above.
Cheers Q-Dog
I've got a problem modifying a path using "Generate Macro".
In the "File Loop" operator you get one (actually two) macro pointing the a folder (file_path and parent_path). If you want to modify this macro using "Generate Macro" you get a syntax error.
Example: suffix("%{parent_path}",10)
The problem is the backslash (\) in the path which will be interpreted wrong, but you can't escape it.. or can you?
Background:
I want to use the "File Loop" operator to read in a number of csv files in different subdirectories and store them in their respective folder.
Example:
"...\2012-05-02\file1.csv" ---> "...\myRepository\2012-05-02\file1.ioo"
"...\2009-10-31\file2.csv" ---> "...\myRepository\2009-10-31\file2.ioo"
Therefore I need the current directory (relative path), which I unfortunately isn't provided in "File Loop". Hence I tried to modify the macro "parent_path" (absolute path), which will lead to the error described above.
Cheers Q-Dog
Tagged:
0
Answers
-
Hello,
I had the same problem. In the end I wrote a Groovy script to manipulate the contents of the macro to return the parts I wanted.
Regards
Andrew0 -
Thanks for your answer awchisholm, could you maybe post that script?
// Edit
For everyone who's interested:
// Import the MacroHandler
import com.rapidminer.MacroHandler;
// Get the Macro Handler
MacroHandler handler = operator.getProcess().getMacroHandler();
// Get the Macro with the name "path"
String macro = handler.getMacro("path");
// Tokenize the macro by the delimiter \
List tokens = macro.tokenize("\\");
// Get the last token (the folder)
String folder = tokens.get(tokens.size()-1);
// Add a new macro named folder
handler.addMacro("folder",folder);0 -
Hello
You beat me to it - I was about to post something similar
regards
Andrew0