如何诊断configparser在pydev下不能工作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何诊断configparser在pydev下不能工作?相关的知识,希望对你有一定的参考价值。
我的问题是:如何诊断? 我正在学习PyDev和Python,所以我想知道如何获得答案,而不仅仅是答案。
背景是这样的。
我有一个使用configparser的应用程序 在IDLE3. 8下可以正常执行 但在PyDev下就不行了。症状是所有configparser调用的结果都是零数据。当我尝试使用解析器输出时,我得到的第一个错误就发生了。它是
Traceback (most recent call last):
File "E:ProjectsActiveWindowActiveWindowStickyWindow.py", line 154, in <module>
sticky_window = config['base']['window_name']
File "C:UsersRichAppDataLocalProgramsPythonPython38libconfigparser.py", line 960, in __getitem__
raise KeyError(key)
KeyError: 'base'
"base "是其中一个部分的名称。它是'DEFAULT'之后的第一个也是唯一的一个部分。
版本信息。
Eclipse IDE for C/C++ Developers
Version: 2019-06 (4.12.0)
Build id: 20190614-1200
PyDev for Eclipse 7.5.0.202001101138
预先感谢你能提供任何启发。
突出的代码部分是
###########################################################################
# Read a Config file if we have one or write a default one if we don't
###########################################################################
config = configparser.ConfigParser(allow_no_value=True)
if os.path.isfile('StickyWindow.cfg'):
config.read('StickyWindow.cfg')
###########################################################################
# default config comment lines use extra white space to make them
# different so that they actually make it into the config file
###########################################################################
else:
config['DEFAULT'] = {
'############################################################################' : None,
'#' : None,
'# Config file for StickyWindow.py' : None,
'# ' : None,
'# Do not use trailing comments in lines' : None,
'# ' : None,
'# Add new configuration settings to the [base] section using the same' : None,
'# names as the [DEFAULT] section' : None,
'# ' : None,
'############################################################################ ' : None,
' ' : None,
'loop_delay' : '0.5',
'keystrokes' : '',
'hot_key' : 'ctrl+shift+q',
' ' : None,
'############################################################################ ' : None,
'# To remove window names from the window listing, add them in single' : None,
'# quotes to window_name_suppress separated by commas inside square brackets' : None,
'############################################################################ ' : None,
' ' : None,
'window_name_suppress' : ['','MSCTFIME UI','Default IME',
'Window','Settings','Microsoft Store','G','MyTimerMsgWnd'],
'stable_mouse_threshold' : '3'
}
config['base'] = {
'############################################################################ ' : None,
'# ' : None,
'# Do not use quotes around window name' : None,
'# ' : None,
'############################################################################ ' : None,
' ' : None,
'window_name' : sticky_window}
print('write config')
with open('stickywindow.cfg',
'w') as configfile: config.write(configfile)
###########################################################################
# Command line window name overrides config file specification
###########################################################################
if (len(sticky_window) == 0):
sticky_window = config['base']['window_name']
loop_delay = config.getfloat('base','loop_delay')
keystrokes = config['base']['keystrokes']
window_name_suppress = config['base']['window_name_suppress']
mouse_count_threshold = int(config['base']['stable_mouse_threshold'])
Oz (在DFW)
答案
通过查看代码,我的猜测是。
if os.path.isfile('StickyWindow.cfg'):
是返回 False
然后配置不被读取。
这可能是因为你在PyDev和IDLE中运行时的工作目录不一样。
所以,使用完整的文件路径来加载它(如果你想让它与当前文件相对,你可以使用 __file__
-- 否则可能应该作为一个参数或环境变量接收)。)
以上是关于如何诊断configparser在pydev下不能工作?的主要内容,如果未能解决你的问题,请参考以下文章