Python - 文件输入输出中的列表解析
我想用列表推导式来实现下面这段代码的功能:
with open('file.txt', 'w') as textfile:
for i in range(1, 6):
textfile.write(str(i) + '\n')
我试了以下方法:
with open('file.txt', 'w') as textfile:
textfile.write(str([i for i in range(1, 6)]) + '\n')
但是它(可以理解)输出的是 [1, 2, 3, 4, 5]
,而不是每个数字单独一行。
我并不清楚“你为什么想这么做?”这个问题的答案;我只是想看看这样做是否可行。谢谢!
编辑:感谢大家的回复;不知为何我一直以为列表推导式总是要用 []
包起来。
5 个回答
1
另外,如果你在写一些文本,目的是让其他应用程序可以使用,通常你会写成CSV格式,而csv
模块可以让这些事情变得简单。
(在这种情况下,你每行只有一个值,所以可能不需要这个模块。)
import csv
with open("file.txt", "wb") as out_f:
writer = csv.writer(out_f)
writer.writerows([[i] for i in range(1, 6)])
注意 csv
模块会帮你把整数转换成字符串。
2
textfile.write('\n'.join(str(i) for i in range(1,6)))
这两者几乎是一样的。这个方法会省略掉最后的换行符。如果你需要那个换行符,可以这样做:
textfile.write(''.join('{}\n'.format(i) for i in range(1,6)))
8
一种实现这个功能的方法是使用 file.writelines()
:
with open('file.txt', 'w') as textfile:
textfile.writelines(str(i) + "\n" for i in range(1, 6))