我正在使用Python 2.7,顺便说一句。
假设我有几个目录,我想为其创建字典。每个目录中的文件名为YYYYMMDD.hhmmss,并且都不同,并且每个目录的大小也不同:
path1 = /path/to/folders/to/make/dictionaries
dir1 = os.listdir(path1)
我还有另一个静态目录,其中包含一些要比较的文件
gpath1 = /path/to/static/files
gdir1 = os.listdir(gpath1)
dir1_file_list = [datetime.strptime(g, '%Y%m%d.%H%M%S') for g in gdir1]
所以我在gdir2中有一个文件的静态目录,现在我想遍历dir1中的每个目录并创建一个唯一的字典。这是代码:
for i in range(0,len(dir1)):
path2 = path1 + "/" + dir1[i]
dir2 = os.listdir(path2)
dir2_file_list = [datetime.strptime(r, '%Y%m%d.%H%M%S') for r in dir2]
# Define a dictionary, and initialize comparisons
dict_gr = []
dict_gr = dict()
for dir1_file in dir1_file_list:
dict_gr[str(dir1_file)] = []
# Look for instances within the last 5 minutes
for dir2_file in dir2_file_list:
if 0 <= (dir1_file - dir2_file).total_seconds() <= 300:
dict_gr[str(dir1_file)].append(str(dir2_file))
# Sort the dictionaries
for key, value in sorted(dict_gr.iteritems()):
dir2_lib.append(key)
dir1_lib.append(sorted(value))
问题在于path2和dir2都可以正确地转到不同的文件夹并获取必要的文件名,并且创建dict_gr都可以正常工作。但是,当我转到对字典进行排序的脚本部分时,已循环的第二个目录将包含第一个目录的内容。第三个循环字典将包含第1个和第2个等的内容。换句话说,它们并不是每个目录都唯一匹配。
有什么想法吗?
答案 0 :(得分:0)
忽略初始化dir2_lib和dir1_lib的附加内容。