⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parsesetup.py

📁 minimal python variant for small footprint apps like embedded apps
💻 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 + -