将列表写入文本文件

时间:2013-09-15 10:08:05

标签: python list file-io

这是我的代码的结尾:

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),但它只是使字符串值包含空格或新行,而不是我想要的。

1 个答案:

答案 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))