【问题标题】:write a list to file but error : writelines() argument must be a sequence of strings [duplicate]将列表写入文件但错误:writelines() 参数必须是字符串序列 [重复]
【发布时间】:2017-03-09 22:21:50
【问题描述】:

我有一个列表,我想将该列表写入文件 txt

lines=[3,5,6]

result = open("result.txt", "w")
result.writelines(lines)
result.close()

但是当我运行时,我得到以下错误:

writelines() 参数必须是字符串序列

【问题讨论】:

  • 嗯,lines 是一个字符串序列吗?
  • result.writelines(map(str, lines))
  • @ozgur,通过您的解决方案,我可以解决该错误。但是我在没有换行符的情况下进入结果文件 3 5 6。如何在列表数据之间添加换行符?
  • result.writelines("\n".join(map(str, lines)))
  • @Baris:如果你有一个字符串,那么就使用file.write(string)file.writelines(string) 仍然会将字符串视为 sequence,我猜这样效率会降低。

标签: python python-2.7


【解决方案1】:

错误是不言自明的:您必须将一系列字符串,而不是数字传递给file.writelines()。因此,将数字转换为字符串,并可能添加换行符:

lines = [3, 5, 6]
with open("result.txt", "w") as f:
    f.writelines([str(line) + "\n" for line in lines])

【讨论】:

  • 为什么要在写行中保留括号?尽管理解列表理解很重要,但在这种情况下它是无用的。
  • Max:两者都可以,尽管对于少数项目,列表推导通常比生成器快。
【解决方案2】:

好吧,你给它一个整数列表,它明确告诉你它想要一个字符串序列。
不答应是不礼貌的:

result.writelines(str(line) for line in lines)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 2020-12-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多