从 ini 文件中读取值作为列表是随机选择的

Reading values as a list from ini file are picked at random

我在从 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

我猜你正在使用内置 ConfigParser。根据文档,这是使用 collections.OrderedDict 将值存储在您的文件中,因此虽然读取是按顺序进行的,但应该没问题,您最终会得到一个有序的字典,表示您的文件内容来自 [section] 从上到下。

如果您想要其中的列表,请不要做您正在做的 list(dict(... 事情。更好地使用列表理解:

src = [value for key, value in config.items('src')]
dst = [value for key, value in config.items('dst')]

然后您将在 srcdst.

中得到您想要的和订购的东西