我创建了一个类似.ini的文件,其中包含稍后在程序中需要的所有值,请参见下文:
[debugging]
checkForAbort = 10
...
[official]
checkForAbort = 30
...
我想将所有这些项目读入一个类,并使其可从我的python项目的其他部分访问。到目前为止,我的代码如下:
from ConfigParser import SafeConfigParser
import glob
class ConfigurationParameters
def __init__(self):
self.checkForAbortDuringIdleTime = None
parser = SafeConfigParser()
# making a list here in case we have multiple files in the future!
candidatesConfiguration = ['my.cfg']
foundCandidates = parser.read(candidatesConfiguration)
missingCandidates = set(candidatesConfiguration) - set(found)
if foundCandidates:
print 'Found config files:', sorted(found)
else
print 'Missing files :', sorted(missing)
print "aborting..."
# check for mandatory sections below
for candidateSections in ['official', 'debugging']:
if not parser.has_section(candidateSections)
print "the mandatory section", candidateSections " is missing"
print "aborting..."
for sectionName in ['official', 'debugging']:
for name, value in parser.items(section_name):
self.name = value
我是python的新手,但是我的代码仍然可以看到很多问题:
我应该如何解决这个问题呢?可以动态创建类属性吗?
我的班级只需要从这些值中读取数据,因此无需写入配置文件!
另外,您可以像AlexMartelli在Bunch班上那样:
文件MyConfig.py
:
from ConfigParser import SafeConfigParser
section_names = 'official', 'debugging'
class MyConfiguration(object):
def __init__(self, *file_names):
parser = SafeConfigParser()
parser.optionxform = str # make option names case sensitive
found = parser.read(file_names)
if not found:
raise ValueError('No config file found!')
for name in section_names:
self.__dict__.update(parser.items(name)) # <-- here the magic happens
config = MyConfiguration('my.cfg', 'other.cfg')
文件foo.py
:
from MyConfig import config
# ...
文件MyProgram.py
:
from MyConfig import config
print config.checkForAbort
import foo
assert config is foo.config
《Python语言参考》指出:
“导入语句分两步执行:(1)找到一个模块,并在必要时对其进行初始化;(2)在本地名称空间中定义一个(或多个)名称(在该范围内使用import语句)”
。”
这意味着,当导入模块时,一个或多个本地名称绑定到模块对象,并且只有在Python程序运行时才首次导入该模块时,它才会初始化(即从文件中读取并运行) 。
在上面的代码中,名称config
只是引用模块对象属性的本地名称。在中通过引用(通过from MyConfig importconfig
)时,Python解释器已初始化了模块对象MyProgram
。当MyProgram
进口foo
它已经被初始化和被绑定到本地名称模块foo
和MyProgram
我们可以称其为foo.config
。但是,这两个名称都指向_同一_ 对象。
我有一个HTML,比如, 这里有两个“tel”类元素,如何提取这两个元素?如果程序不知道这些名为“tel”的类的数量,如何提取?请帮忙。 最终目标是获取tel类元素中的所有文本。 我已经试着用下一个兄弟元素来解决这个问题。但是那里没有运气。不过我可能试错了。请纠正我或帮助我实现我在这里尝试的目标。 提前谢谢。
问题内容: 如何使用jQuery选择应用了特定CSS属性的所有元素?例如: 如何通过名为“四舍五入”的属性进行选择? CSS类名非常灵活。 如何将这两个操作替换为一个操作。也许是这样的: 有什么更好的方法吗? 问题答案: 您不能(使用CSS选择器)根据已应用于它们的CSS属性来选择元素。 如果您想手动执行此操作,则可以选择文档中的每个元素,在它们上循环,然后检查您感兴趣的属性的计算值(尽管这可能仅
显示所有指定的元素。 使用展开运算符 (...) 和 Array.forEach() 来清除每个指定元素的 display 属性。 const show = (...el) => [...el].forEach(e => (e.style.display = '')); show(...document.querySelectorAll('img')); // Shows all <img> e
隐藏所有指定的元素。 使用展开运算符(...)和 Array.forEach() 将 display: none 应用于每个指定的元素。 const hide = (...el) => [...el].forEach(e => (e.style.display = 'none')); hide(...document.querySelectorAll('img')); // Hides all
问题内容: 有没有一种 有效的 方法来用Java创建具有给定大小的文件? 在C语言中,可以使用ftruncate来完成。 大多数人只会将 n个 虚拟字节写入文件,但是必须有一种更快的方法。我在考虑ftruncate以及稀疏文件 … 问题答案: 创建一个新的RandomAccessFile并调用setLength方法,指定所需的文件长度。底层JRE实现应使用您环境中可用的最有效方法。 以下程序 在L
问题内容: 使用JavaScript在具有特定CSS类的html文档中获取所有元素的数组的最佳方法是什么? 目前没有像jQuery这样的JavaScript框架现在允许在这里使用,我可以循环所有元素并亲自检查它们。我希望有一些优雅的东西。 问题答案: 它的值得指出的对于原生浏览器支持已经得到了_很多_更好。但是,如果您必须支持旧版浏览器,那么… 使用已经写好的一个。大多数主要的JS库都以某种形式包