我在将ini文件中的某些值作为列表读取时遇到问题。我制作了一个程序,它将两个列表作为参数(源,目标),然后将源路径复制到目标路径。它从名为paths.ini的ini文件中获取这些路径。但是,我注意到这些值没有按时间顺序添加,这意味着ini文件中的第一个值不一定是列表中的第一个值。这是一个严重的错误,因为我希望第一个源只能复制到第一个目的地。
以下是我所做的示例代码:
try:
src = list(dict(config.items('src')).values())
dst = list(dict(config.items('dst')).values())
print("src: "+ str(src) + " dst: "+ str(dst))
except Exception as e:
messagebox.showerror("Data mismatch", "Mismatch between data from ini and core file")
sys.exit(0)
if(utilFunctions.copyto(src, dst, True)):
successCopy()
else:
errorCopy()
对于那些想要查看ini文件的人:
[src]
src1 = C:/Users/saUser/Documents/copyExample/singleCopies/1/2/3.txt
src2 = C:/Users/saUser/Documents/copyExample/singleCopies/1/2/3.txt
[dst]
dst1 = C:/Users/saUser/Documents/copyExample/singleCopies/1
dst2 = C:/Users/saUser/Documents/copyExample/singleCopies/1
答案 0 :(得分:2)
我猜您使用的是内置ConfigParser
。根据文档,这是使用collections.OrderedDict
来存储文件中的值,所以当按顺序进行读取时,它应该没问题,并且最终得到一个有序字典,表示来自{{{{{ 1}}从上到下。
如果你想要一个列表,那就不要那样做[section]
你正在做的事情。更好地使用列表理解:
list(dict(...
然后,您将在src = [value for key, value in config.items('src')]
dst = [value for key, value in config.items('dst')]
和src
中获得您想要的内容。