我想将文件名和修改日期时间戳存储在Python 3.6中特定文件夹的列表格式列表中。
假设在第1天文件夹中有两个文件,因此我具有以下列表列表:
day_1_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-03-31T07:36:45Z"]]
现在,在第2天创建另一个新文件“ f3”(添加新的内部列表),并更新现有文件“ f2”(更改时间戳):
day_2_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-04-01T12:23:18Z"], ["f3", "2019-04-02T07:36:45Z"]]
我想在两个列表之间运行逻辑,这将产生一个简单的列表,该列表将为我提供需要重新命名的名称。
output = ["f2", "f3"]
并使用新添加的列表更新列表的第一天列表(保留这些文件的内部列表,这些列表在最近的比较中被删除。
以前很简单,我的工作范围仅涉及到新文件,因此我维护了一个简单的文件名列表,并执行以下操作来获取新添加的文件:
delta = [item for item in new_list if item not in file_list]
有帮助吗?
答案 0 :(得分:1)
如果您不想使用字典,则可以使用类似这样的代码修改
delta = [item[0] for item in new_list if item[0] not in file_list and item[1] > date_cutoff]
我建议也将item[1]
转换为日期时间对象以进行比较。
答案 1 :(得分:1)
首先从列表中构建字典,这使搜索相关文件名更加有效:
day_1_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-03-31T07:36:45Z"]]
day_2_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-04-01T12:23:18Z"], ["f3", "2019-04-02T07:36:45Z"]]
day1 = {filename:time for filename, time in day_1_List}
day2 = {filename:time for filename, time in day_2_List}
delta = [filename for filename in day2 if filename not in day1 or day1[filename]<day2[filename]]
print(delta)
# ['f2', 'f3']
您还可以构建第1天到第2天之间常见的未更改文件的字典。
common = {filename: time for filename, time in day2.items() if day1.get(filename) == time}
print(common)
# {'f1': '2019-03-27T07:36:45Z'}
答案 2 :(得分:0)
最好的方法是像这样在内部列表中仅选择第一个条目
delta = [item[0] for item in day_2_List if item not in day_1_List]
注意:仅当您可以确保day_2_list'f2'的数据时间比day_1_list开头的数据时间长时,这才有用。