【问题标题】:File contains no section headers - Python文件不包含节标题 - Python
【发布时间】:2019-06-07 09:15:51
【问题描述】:

我正在尝试使用 SafeConfigParser 在 python 3.7 中读取配置文件。我试过给出完整的文件名(带文件位置),只给出文件名(不带文件位置),在 SafeConfigParser 中使用 readfp 函数,只使用 configparser 而不是 safeconfigparser 但它们都没有工作。我 100% 确定至少正在读取正确的文件。

这是我的python代码:

from configparser import SafeConfigParser
import os

def main():
    filename = "C:/Users/Umer Sherdil Paracha/Desktop/distutils.cfg"
    if os.path.isfile(filename):
        parser = SafeConfigParser()
        parser.read(filename)
        print(parser.sections())
        screen_width = parser.getint('graphics','width')
        screen_height = parser.getint('graphics','height')
    else:
        print("Config file not found")

if __name__=="__main__":
    main()

这是我的 cfg 文件:

[GRAPHICS]
height = 600
width = 800

我完全被这个愚蠢的问题所困扰。在这方面的任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 尝试在您的代码中将部分标题重命名为 [graphics]。如果它不起作用,还可以尝试删除 height = 600 之间的空间。并写成 height=600 等。
  • 在 parser.getint 中尝试使用 'GRAPHICS' 而不是 'graphics'
  • 您可以发布您收到的错误消息吗?您的代码是否命中“找不到配置文件”块?

标签: python sectionheader config-files


【解决方案1】:

Windows ini 文件使用

r'pathname'  

识别文件。

r"pathname"

也可能有效。在我的情况下,没有“r” Python 在 ConfigParser.read 上没有错误,它只是找不到该部分。

【讨论】:

    【解决方案2】:

    很难确定,但我猜你的文件名字符串有问题。

    先试试这段调试代码:

    filename = "C:/Users/Umer Sherdil Paracha/Desktop/distutils.cfg"
    with open(filename) as file:
        print("Successfully got to this line!")
    

    我猜它会给你一个找不到文件的错误。这可能有几个原因(尽管您始终可以通过右键单击文件并打开属性来仔细检查您的路径是否正确):

    1. 您使用的是 unix 样式的斜线。 Windows typically uses backslashes ()
    2. 当您开始在字符串中使用反斜杠时,python 可能会感到困惑,因为反斜杠也用于转义特殊字符。告诉python这是一个raw string,在起始引号前添加一个r:r"\I will not \escape the backslashes"

    我相信你的文件名变量应该是这样的:

    filename = r"C:\Users\Umer Sherdil Paracha\Desktop\distutils.cfg"
    

    如果您在文件字符串中进行了这两项更改,我怀疑上面的测试代码会起作用,做出这些更改后您的真实代码也会起作用。

    一旦成功打开文件,请记住 python 始终区分大小写,因此您必须更新以下两行代码,以反映 .cfg 文件中使用的大小写:

    screen_width = parser.getint('GRAPHICS','width')
    screen_height = parser.getint('GRAPHICS','height')
    

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 1970-01-01
      • 2017-02-11
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      相关资源
      最近更新 更多