📄 parsesetup.py
字号:
# Parse Makefiles and Python Setup(.in) files.import regeximport string# Extract variable definitions from a Makefile.# Return a dictionary mapping names to values.# May raise IOError.makevardef = regex.compile('^\([a-zA-Z0-9_]+\)[ \t]*=\(.*\)')def getmakevars(filename): variables = {} fp = open(filename) try: while 1: line = fp.readline() if not line: break if makevardef.match(line) < 0: continue name, value = makevardef.group(1, 2) # Strip trailing comment i = string.find(value, '#') if i >= 0: value = value[:i] value = string.strip(value) variables[name] = value finally: fp.close() return variables# Parse a Python Setup(.in) file.# Return two dictionaries, the first mapping modules to their# definitions, the second mapping variable names to their values.# May raise IOError.setupvardef = regex.compile('^\([a-zA-Z0-9_]+\)=\(.*\)')def getsetupinfo(filename): modules = {} variables = {} fp = open(filename) try: while 1: line = fp.readline() if not line: break # Strip comments i = string.find(line, '#') if i >= 0: line = line[:i] if setupvardef.match(line) >= 0: name, value = setupvardef.group(1, 2) variables[name] = string.strip(value) else: words = string.split(line) if words: modules[words[0]] = words[1:] finally: fp.close() return modules, variables# Test the above functions.def test(): import sys import os if not sys.argv[1:]: print 'usage: python parsesetup.py Makefile*|Setup* ...' sys.exit(2) for arg in sys.argv[1:]: base = os.path.basename(arg) if base[:8] == 'Makefile': print 'Make style parsing:', arg v = getmakevars(arg) prdict(v) elif base[:5] == 'Setup': print 'Setup style parsing:', arg m, v = getsetupinfo(arg) prdict(m) prdict(v) else: print arg, 'is neither a Makefile nor a Setup file' print '(name must begin with "Makefile" or "Setup")'def prdict(d): keys = d.keys() keys.sort() for key in keys: value = d[key] print "%-15s" % key, str(value)if __name__ == '__main__': test()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -