文件不包含节标题-Python

时间:2019-01-12 20:34:27

标签: python sectionheader config-files

我正在尝试使用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

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

2 个答案:

答案 0 :(得分:0)

很难确定地说,但是我想您的文件名字符串有问题。

首先尝试以下调试代码:

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

我猜这将引发您找不到文件的错误。可能有两个原因(尽管您始终可以通过右键单击文件并打开属性来再次检查是否具有正确的路径):

  1. 您正在使用unix样式斜杠。 analysis comparing CLA and DCO
  2. 当您开始在字符串中使用反斜杠时,由于反斜杠还用于转义特殊字符,因此python可能会感到困惑。通过在引号r"\I will not \escape the backslashes"之前加一个r来告诉python这是Windows typically uses 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')

答案 1 :(得分:0)

对于Windows ini文件,请使用

r'pathname'  

识别文件。

r"pathname"

也可以。就我而言,没有ConfigParser.read的Python没有出现“ r”错误,它只是找不到该部分。