2

这是我的代码的结尾:

duplicates = [files for files in file_dict.values() if len(files) > 1]

dupString = str(duplicates)

text_file.write("\n\n\nDuplicates Files: \n\n" + (dupString))

txt文件中的输出为:

[['/Users/simon/Desktop/aF/file1.py', '/Users/simon/Desktop/aF/hidden/file2.py', '/Users/simon/Desktop/aF/hidden/file3.py']]

我希望输出为:

/Users/simon/Desktop/aF/file1.py
/Users/simon/Desktop/aF/hidden/file2.py
/Users/simon/Desktop/aF/hidden/file3.py

我怎样才能做到这一点?我尝试使用 ' '.join(dupString) 和 '\n'.join(dupString) 但它只是让字符串值有空格或新行,这不是我想要的。

4

1 回答 1

2

好的,我的理解是:

duplicates = [files for files in file_dict.values() if len(files) > 1]

返回文件列表的列表。你的例子是这样的:

[['/Users/simon/Desktop/aF/file1.py', '/Users/simon/Desktop/aF/hidden/file2.py', '/Users/simon/Desktop/aF/hidden/file3.py']]

在这种情况下,您需要做的是首先将其更改为仅制作一个字符串列表,您可以使用itertools.chain.from_iterable

from itertools import chain
duplicates = chain.from_iterable([files for files in file_dict.values() if len(files) > 1])

那么这只是一个写作问题:

text_file.write("\n\n\nDuplicates Files: \n\n%s" % '\n'.join(duplicates)) 
于 2013-09-15T10:18:29.877 回答