如何在python中每次都写一个新行?

时间:2013-07-27 07:00:32

标签: python io

我只是试图添加新的推文进入新的一行 在一个文件....到目前为止我没有尝试在OS X Python上工作。

  class CustomStreamListener(tweepy.StreamListener):
      def on_status(self, status):
          print status.text

          with open("myNewFile", "a") as file:
          file.write('\n')
          file.write("\n" + status.text + "\n")
          file.write('\n')

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

您有缩进问题:

  with open("myNewFile", "a") as file:
  file.write('\n')
  file.write("\n" + status.text + "\n")
  file.write('\n')

如果你想进入with上下文,你应该在右边缩进以下三行。

此外,您可以使用format()准备要编写的字符串,以提高效率和可读性:

  import os
  with open("myNewFile", "a") as file:
      file.write('{0}{0} {1} {0}{0}'.format(os.linesep, status.text)
      #file.write('\n')
      #file.write("\n" + status.text + "\n")
      #file.write('\n')

请注意os.linesep插入独立于操作系统的新行:)。

您还可以通过重复两次linesep来编写两个file.write('{0} {1} {0}'.format(os.linesep * 2, status.text) :(将字符串乘以2):

{{1}}

哪个更干净。

答案 1 :(得分:2)

您的with标记中的缩进错误

class CustomStreamListener(tweepy.StreamListener):
  def on_status(self, status):
    print status.text

    with open("myNewFile", "a") as file:
      file.write('\n')                           #move this over 1 indentation
      file.write("\n" + status.text + "\n")      #move this over 1 indentation
      file.write('\n')                           #move this over 1 indentation

同时尝试'\r\n'而不仅仅是'\n',因为UNIX处理换行符的方式与Windows不同。

另一种选择是使用universal newline support这样的

打开文件
    with open("myNewFile", "u") as file:

请注意,“u”模式在3.x中已弃用,因为它是默认值

编辑2 您的换行符似乎显示在输出中。见 this related question

答案 2 :(得分:1)

您可以使用以下语法:

print >>file, status.text

这与普通的print函数相同,除了它输出到文件(所以它会在最后添加换行符,就像普通的print

答案 3 :(得分:1)

这可能有效:

entry = '\n' + status.text

f = open('myNewFile', 'a')
f.write(entry)
f.close()