【发布时间】:2016-04-26 19:14:00
【问题描述】:
我在从 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
【问题讨论】:
-
python(实际上是大多数语言)中的字典是无序的。你为什么要通过
dict传递你的config.items('...')调用,然后将其转换回列表? -
@Hamms 我的程序将两个列表(源、目标)作为参数。您是否知道一种更好的方法,我可以从 ini 文件中获取值,以便对项目进行排序?
-
@tomSurge 更好的方法是在同一行中输入所有源/目的地,用已知字符(例如',')分隔,然后简单地读取并拆分该行。它将导致代码更简单,并且无需更改代码即可拥有可变数量的源和目标。
-
@tomSurge 是的,您的程序需要两个列表。那你为什么要使用
dict? -
@Hamms 因为我只需要值,所以如果我简单地执行 "list(config.items('src')) 我也会得到部分名称。
标签: python list dictionary ini