【问题标题】:How do I add a linebreak at the end of a string in text files?如何在文本文件的字符串末尾添加换行符?
【发布时间】:2020-07-26 07:09:22
【问题描述】:

我试过这样做:

with open("contactbook.txt","a") as f:
     f.write("hello\n")

但它被打印为:

'hello\n'

我读取文件的代码:

with open("contactbook.txt","r") as f:
     lines = sorted(f.readlines())
     print(lines)

编辑:

我试图检查文本文件,其中 \n 确实被解释为换行符!

但在 python 的 shell 中它仍然显示为 \n

我做错了什么?是因为我的打印方式吗?

【问题讨论】:

  • 你用什么程序来检查它是如何打印的?
  • 嘿,这是完美的工作,没有错,删除文件并再次运行。这可能是由于附加模式,您可能会再次看到旧数据。
  • 此代码应按需要运行。你在什么操作系统上工作?您使用的是什么 IDE/编辑器?
  • @VigneshRajendran 你好!我已经这样做了,但它仍然打印为 \n :(
  • @AlbertAlberto Windows 10,python 3.8.3

标签: python-3.x file-handling


【解决方案1】:

写得很好。

问题在于,当您重新读入文件时,您会在单个 print(lines) 语句中打印出整个 lines 列表;这将为您提供一个适合调试的表单,而不是真正显示给最终用户的表单,包括将控制字符写成\n 等等。

如果您以任何其他方式检查文件,您将能够确认它具有您想要的内容。

【讨论】:

  • 哦,你的意思是我应该使用循环来打印它?
  • 是的。或者您需要对其进行的任何其他处理。
【解决方案2】:

以防万一有像我这样的人遇到同样的问题......

之前我的代码的问题是我打印出来的方式,所以通过改变我读取/打印它的方式:

with open('contactbook.txt', 'r') as f:
     for lines in sorted(f):
          print(lines, end='')

现在可以了!

sabik 的回答帮助我意识到了这一点! :)

【讨论】:

  • 你也可以使用print(''.join(lines))而不使用循环。
猜你喜欢
  • 2014-05-28
  • 1970-01-01
  • 2014-07-10
  • 2012-02-03
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多