Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从ini文件中以列表形式读取值是随机选取的_Python_List_Dictionary_Ini - Fatal编程技术网

Python 从ini文件中以列表形式读取值是随机选取的

Python 从ini文件中以列表形式读取值是随机选取的,python,list,dictionary,ini,Python,List,Dictionary,Ini,从ini文件中读取一些值作为列表时出现问题。我制作了一个程序,它将两个列表作为参数(源、目标),然后将源路径复制到目标路径。它从名为paths.ini的ini文件中获取这些路径。但是,我注意到这些值没有按时间顺序添加,这意味着ini文件中的第一个值不一定是列表中的第一个值。这是一个严重错误,因为我只希望将第一个源复制到第一个目标 以下是我所做工作的示例代码: try: src = list(dict(config.items('src')).values()) dst = lis

从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
来存储文件中的值,因此,当按顺序读取时,应该可以使用有序字典,从
[部分]
上到下表示文件内容

如果你想从中得到一个列表,就不要做你正在做的事情。最好使用列表理解:

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

然后在
src
dst
中,您将得到您想要的,并进行排序。我猜您使用的是内置的
ConfigParser
。根据文档,即使用
集合。OrderedDict
将值存储在文件中,因此,在按顺序进行读取时,应该是正常的最后,您将得到一个有序的字典,从
[节]
顶部到底部表示您的文件内容

如果你想从中得到一个列表,就不要做你正在做的事情。最好使用列表理解:

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

然后,您将在
src
dst

中获得所需的排序。python词典(实际上在大多数语言中)是无序的。为什么您要通过
dict
传递
config.items(“…”)
调用,然后将其转换回列表?@Hamms我的程序需要两个列表(源、目的地)作为参数。您知道更好的方法吗?我可以从ini文件中获取值,以便对项目进行排序?@tomsweep更好的方法是在同一行中输入所有源/目的地,并用已知字符('例如,'分隔),然后简单地读取和拆分该行。这将导致代码更简单,并且能够在不需要更改代码的情况下拥有可变数量的源和目标。@是的,您的程序有两个列表。那么为什么要使用
dict
?@Hamms,因为我只需要值,如果我只需要“列表”(config.items('src'))我也得到了节名。python中的字典(事实上在大多数语言中)是无序的。为什么你要通过
dict
传递
config.items(“…”)
调用,然后将其返回列表?@Hamms我的程序需要两个列表(源、目标)作为参数。您知道更好的方法可以从ini文件中获取值,从而对项目进行排序吗?@tomsweep更好的方法是在同一行中输入所有源/目的地,并用已知字符(“,”例如)分隔,然后简单地读取和拆分该行。这将导致代码更简单,并且能够在不需要更改代码的情况下拥有可变数量的源和目标。@是的,您的程序有两个列表。那么为什么要使用
dict
?@Hamms,因为我只需要值,如果我只需要“列表”(config.items('src'))我还得到了部分名称。干净、易懂、优雅的解决问题的方法。谢谢。干净、易懂、优雅的解决问题的方法。谢谢。