我正在尝试使用
SafeConfigParser
读取 Python 3.7 中的配置文件。我尝试过给出带有文件位置的完整文件名,没有文件位置,使用 readfp
中的 SafeConfigParser
函数,使用 configparser
而不是 safeconfigparser
但它们都不起作用。我确信正在读取正确的文件:
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
很难确定,但我猜你的文件名字符串有问题。
先尝试一下这段调试代码:
filename = "C:/Users/Umer Sherdil Paracha/Desktop/distutils.cfg"
with open(filename) as file:
print("Successfully got to this line!")
我猜这会抛出一个文件未找到的错误。造成这种情况的原因可能有几个(尽管您始终可以通过右键单击文件并打开属性来仔细检查路径是否正确):
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')
与 Windows ini 文件一起使用
r'pathname'
识别文件。
r"pathname"
也可能有效。就我而言,如果没有“r”,Python 在 ConfigParser.read 上不会出错,它只是找不到该部分。