python读取多个ini文件,打印出来的结果不相同(已经解决)
各位大佬好,小弟学习ini读取时遇到以下问题。
# 导包
import configparser
import os, sys
config = configparser.ConfigParser(strict = False) # 类实例化
# 获取文件夹中的文件列表
names = [name for name in os.listdir('./1')
if os.path.isfile(os.path.join('./1/', name))]
display2s=[]
#获取文件路径
for filename in names:
filepath="./1/"+filename
print(filepath)
config.read(filepath, encoding="GBK")
a=config.options("显示器")
print(a)
if "显示器2|显示器属性|型号" in config.options("显示器"):
display2s.append(config["显示器"]["显示器2|显示器属性|型号"])
else:
display2s.append('无')
print(display2s)
###以下是ini文件内容
####1.ini文件
[显示器]
显示器1|显示器属性|显示器名称=通用即插即用监视器 [NoDB]
显示器1|显示器属性|显示器 ID=DEL2011
显示器1|显示器属性|型号=DELL D2421H
显示器1|显示器属性|制造日期=第37周 / 2020
显示器1|显示器属性|序列号=BMR1K33
显示器1|显示器属性|最大可用屏幕=527 mm x 296 mm (23.8")
显示器1|显示器属性|图像宽高比=16:9
显示器1|显示器属性|水平扫描频率=30 - 83 kHz
显示器1|显示器属性|垂直扫描频率=56 - 76 Hz
显示器1|显示器属性|最大像素频率=170 MHz
显示器1|显示器属性|伽马值=2.20
显示器1|显示器属性|支持电源管理模式(DPMS)=Active-Off
####2.ini文件
[显示器]
显示器1|显示器属性|显示器名称=Dell UltraSharp U2312HM (Digital)
显示器1|显示器属性|显示器 ID=DEL4072
显示器1|显示器属性|型号=DELL U2312HM
显示器1|显示器属性|显示器类型=23" LCD (FHD)
显示器1|显示器属性|制造日期=第29周 / 2012
显示器1|显示器属性|序列号=TPXG727IH4QL
显示器1|显示器属性|最大可用屏幕=510 mm x 287 mm (23.0")
显示器1|显示器属性|图像宽高比=16:9
显示器1|显示器属性|亮度=300 cd/m2
显示器1|显示器属性|对比度=1000:1
显示器1|显示器属性|视角=178/178
显示器1|显示器属性|接口类型=DSub, DVI-D, DisplayPort
显示器1|显示器属性|水平扫描频率=30 - 83 kHz
显示器1|显示器属性|垂直扫描频率=56 - 76 Hz
显示器1|显示器属性|最大像素频率=170 MHz
显示器1|显示器属性|最大分辨率=1920 x 1080
显示器1|显示器属性|伽马值=2.20
显示器1|显示器属性|支持电源管理模式(DPMS)=Standby, Suspend, Active-Off
显示器2|显示器属性|显示器名称=通用即插即用监视器 [NoDB]
显示器2|显示器属性|显示器 ID=DEL40DD
显示器2|显示器属性|型号=DELL UP2716D
显示器2|显示器属性|制造日期=第20周 / 2017
显示器2|显示器属性|序列号=N3JWH75G248L
显示器2|显示器属性|最大可用屏幕=597 mm x 336 mm (27.0")
显示器2|显示器属性|图像宽高比=16:9
显示器2|显示器属性|水平扫描频率=30 - 88 kHz
显示器2|显示器属性|垂直扫描频率=50 - 75 Hz
显示器2|显示器属性|最大像素频率=250 MHz
显示器2|显示器属性|伽马值=2.20
显示器2|显示器属性|支持电源管理模式(DPMS)=Active-Off
####3.ini文件
[显示器]
显示器1|显示器属性|显示器名称=Dell UltraSharp U2312HM (Digital)
显示器1|显示器属性|显示器 ID=DEL4072
显示器1|显示器属性|型号=DELL U2312HM
显示器1|显示器属性|显示器类型=23" LCD (FHD)
显示器1|显示器属性|制造日期=第29周 / 2012
显示器1|显示器属性|序列号=TPXG727IH4QL
显示器1|显示器属性|最大可用屏幕=510 mm x 287 mm (23.0")
显示器1|显示器属性|图像宽高比=16:9
显示器1|显示器属性|亮度=300 cd/m2
显示器1|显示器属性|对比度=1000:1
显示器1|显示器属性|视角=178/178
显示器1|显示器属性|接口类型=DSub, DVI-D, DisplayPort
显示器1|显示器属性|水平扫描频率=30 - 83 kHz
显示器1|显示器属性|垂直扫描频率=56 - 76 Hz
显示器1|显示器属性|最大像素频率=170 MHz
显示器1|显示器属性|最大分辨率=1920 x 1080
显示器1|显示器属性|伽马值=2.20
显示器1|显示器属性|支持电源管理模式(DPMS)=Standby, Suspend, Active-Off
显示器2|显示器属性|显示器名称=通用即插即用监视器 [NoDB]
显示器2|显示器属性|显示器 ID=DEL40DD
显示器2|显示器属性|型号=DDDDDELL UP2716D
显示器2|显示器属性|制造日期=第20周 / 2017
显示器2|显示器属性|序列号=N3JWH75G248L
显示器2|显示器属性|最大可用屏幕=597 mm x 336 mm (27.0")
显示器2|显示器属性|图像宽高比=16:9
显示器2|显示器属性|水平扫描频率=30 - 88 kHz
显示器2|显示器属性|垂直扫描频率=50 - 75 Hz
显示器2|显示器属性|最大像素频率=250 MHz
显示器2|显示器属性|伽马值=2.20
显示器2|显示器属性|支持电源管理模式(DPMS)=Active-Off
正常情况输出结果,1.ini文件中不存在显示器2内容,打印出无。
将1.ini改为4.ini时,4.ini文件中不存在显示器2内容,会打印出上一个ini文件的显示器2的值。
如何正确的输出结果?
以上是我的问题,查看搜索引擎、参考文档无果,故只能麻烦各位大佬。
推荐文章: