我需要用Python模仿C的预处理器功能。
如果我想运行调试版本,我使用C
进行如下操作#ifdef DEBUG
printf(...)
#endif
我只是使用-DDEBUG或类似方法来启动或关闭它。
我可以在Python / Ruby中使用什么方法? 我的意思是,我应该怎么做才能控制python / ruby脚本的行为,以便我可以更改影响项目中所有脚本文件的变量?
答案 0 :(得分:5)
您通常在此用例中使用python logging功能。这是在配置文件中配置的,您可以设置输出级别。如果您熟悉java log4j,则使用非常接近。
答案 1 :(得分:2)
您几乎可以使用实际的C预处理器。如果您将文件重命名为.c
,则可以执行以下操作:gcc -w -E input/file.py.c -o output/file.py
。
主要问题似乎是评论。预处理器会抱怨python注释行是无效的预处理器指令。您可以使用C ++注释(// comment
)来解决此问题。
或者,更好的想法是编写自己的简单预处理器。如果您只需要#define
功能,那么您只是在谈论进行搜索并替换您的文件。
另一种解决方案是这样的:
def nothing(*args):
pass
def print_debug(msg):
print msg
if not DEBUG:
print_debug = nothing
这样,如果您没有处于调试模式,则您的print语句不会执行任何操作。
答案 2 :(得分:2)
也可以通过PYPI
访问最新版本以下是基本用法:
from pypreprocessor import pypreprocessor
pypreprocessor.parse()
#define debug
#ifdef debug
print('The source is in debug mode')
#else
print('The source is not in debug mode')
#endif
你去吧。 C样式预处理器条件编译在python中实现。
SideNote:该模块兼容python2x和python3k。
免责声明:我是pypreprocessor的作者。