我使用的是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都会很好地工作。但是,当我转到脚本中对字典进行排序的部分时,循环经过的第二个目录将包含第一个目录的内容。第三个循环字典将包含第一个和第二个目录的内容,依此类推。换句话说,它们与每个目录不是唯一匹配的。
有什么想法吗?
发布于 2019-06-06 03:12:54
忽略了追加到dir2_lib和dir1_lib,需要对它们进行初始化。
https://stackoverflow.com/questions/56466276
复制相似问题