这是我的代码的结尾:
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),但它只是使字符串值包含空格或新行,而不是我想要的。
答案 0 :(得分: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))