0

我正在使用列表中的几个文件名,我已经选择了以 txt 结尾的文件来进行一些处理:

my_files = ['my_doc_raw.txt', 'my_doc_transformed.txt', 'some_other_doc.txt', 'requirements.txt']

在这种情况下,只有一个文件my_doc_raw.txt需要my_doc_transformed.txt经过下游处理,而不是两者。确保我只保留一个的最佳方法是什么?我很难弄清楚如何通过删除这两个文件来进行过滤。

请注意,我有一个脚本来确定列表中项目的数据类型。例如:

[ data_type(i) for i in my_files ] 

#result
["my_doc", "my_doc", "other_doc", "requirements"]

所以考虑到现在我有重复my_doc但我不确定从那里去哪里或采取其他方法,这让我更接近一点。有小费吗?

4

1 回答 1

0

只要您有一种清晰且经过验证的方法来规范化您的文件名(就像您的data_type()函数一样,那么您所要做的就是保留一个存储您已处理的每种类型的列表。

这是我的实现:

my_files = ['my_doc_raw.txt', 'my_doc_transformed.txt', 'some_other_doc.txt', 'requirements.txt']

completed = []

for file in my_files:
    file_type = data_type(file)

    if file_type not in completed:
        #Add type to completed so we don't do it again
        completed.append(file_type)
        upstream_process(file)  #Placeholder for whatever processing you want to do

它所做的只是检查数据类型是否在我们的列表中。如果不是,则将其添加到列表中并进行处理。这可以防止任何数据类型运行两次。

于 2021-01-19T15:00:41.730 回答