我们假设我有以下文件结构:
data.py
foo = []
bar = []
abc = "def"
Run Code Online (Sandbox Code Playgroud)
core.py
import data
# do something here #
# a = ...
print a
# ['foo', 'bar', 'abc']
Run Code Online (Sandbox Code Playgroud)
我需要获取data.py文件中定义的所有变量.我怎样才能做到这一点?我可以使用dir(),但它返回模块的所有属性,包括__name__等等.
Jak*_*yer 37
print [item for item in dir(adfix) if not item.startswith("__")]
Run Code Online (Sandbox Code Playgroud)
通常是这样做的秘诀,但它引出了一个问题.
#!/usr/local/bin/python
# coding: utf-8
__author__ = 'spouk'
def get_book_variable_module_name(module_name):
module = globals().get(module_name, None)
book = {}
if module:
book = {key: value for key, value in module.__dict__.iteritems() if not (key.startswith('__') or key.startswith('_'))}
return book
import config
book = get_book_variable_module_name('config')
for key, value in book.iteritems():
print "{:<30}{:<100}".format(key, value)
Run Code Online (Sandbox Code Playgroud)
示例配置
#!/usr/local/bin/python
# coding: utf-8
__author__ = 'spouk'
import os
_basedir = os.path.abspath(os.path.dirname(__file__))
# database section MYSQL section
DBHOST = 'localhost'
DBNAME = 'simple_domain'
DBPORT = 3306
DBUSER = 'root'
DBPASS = 'root'
# global section
DEBUG = True
HOSTNAME = 'simpledomain.com'
HOST = '0.0.0.0'
PORT = 3000
ADMINS = frozenset(['admin@localhost'])
SECRET_KEY = 'dfg45DFcx4rty'
CSRF_ENABLED = True
CSRF_SESSION_KEY = "simplekey"
Run Code Online (Sandbox Code Playgroud)
结果函数
/usr/local/bin/python2 /home/spouk/develop/python/2015/utils_2015/parse_config_py.py
DBPORT 3306
os <module 'os' from '/usr/local/lib/python2.7/os.pyc'>
DBHOST localhost
HOSTNAME simpledomain.com
HOST 0.0.0.0
DBPASS root
PORT 3000
ADMINS frozenset(['admin@localhost'])
CSRF_SESSION_KEY simplekey
DEBUG 1
DBUSER root
SECRET_KEY dfg45DFcx4rty
CSRF_ENABLED 1
DBNAME simple_domain
Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)
享受,伙计.:)
| 归档时间: |
|
| 查看次数: |
25589 次 |
| 最近记录: |