Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mimic C preprocessor with Python/Ruby?

I need to mimic the preprocessor feature of C with Python.

If I want to run the debug release, I use as follows with C

#ifdef DEBUG
printf(...)
#endif

I just use -DDEBUG or similar to trigger it on or off.

What method can I use for Python/Ruby? I mean, what should I do to control the behavior of python/ruby scripts in such a way that I can change a variable that affects all the script files in a project?

like image 438
prosseek Avatar asked Nov 23 '25 14:11

prosseek


2 Answers

You usually use the python logging functionality in this use-case. That is configured in configuration files, and you can set the output levels. Very close in usage to java log4j, if you're familiar with that.

like image 128
extraneon Avatar answered Nov 26 '25 03:11

extraneon


You can almost use the actual C preprocessor. If you rename your file to end in .c, you can then do this: gcc -w -E input/file.py.c -o output/file.py.

The main issue seems to be with comments. The preprocessor will complains about python comment lines being invalid preprocessor directives. You can remedy this by using C++ comments (// comment).

Or, a better idea would be to just write your own simple preprocessor. If you only need #define functionality, you're just talking about a doing a search and replace on your file.

Another solution would be something like this:

def nothing(*args):
    pass

def print_debug(msg):
    print msg

if not DEBUG: 
    print_debug = nothing

That way your print statements don't do anything if you're not in debug mode.

like image 35
Seth Avatar answered Nov 26 '25 03:11

Seth



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!