如何诊断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下不能工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在eclipse+pydev运行scrapy项目

安装pydev 但是没有pydev工程选项

python+Eclipse+pydev环境搭建

安装 Eclipse 后 Pydev 透视图不显示

如何在eclipse配置PyDev

如何将 python“库”添加到 Eclypse 和 pydev