3

我只是想将新推文附加到文件的新行中......到目前为止,我没有尝试在 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

4 回答 4

5

您有缩进问题:

  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通过重复两次来写两个(将字符串乘以 2):

file.write('{0} {1} {0}'.format(os.linesep * 2, status.text)

哪个更干净。

于 2013-07-27T07:09:48.470 回答
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 不同。

另一种选择是使用通用换行支持打开文件,如下所示

    with open("myNewFile", "u") as file:

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

编辑 2 似乎您的换行符出现在输出中。请参阅此相关问题

于 2013-07-27T07:03:46.540 回答
1

您可以使用以下语法:

print >>file, status.text

除了输出到文件之外,这与普通print函数的作用相同(因此它会在末尾放置一个换行符,就像普通函数一样print

于 2013-07-27T07:01:27.197 回答
1

这可能有效:

entry = '\n' + status.text

f = open('myNewFile', 'a')
f.write(entry)
f.close()
于 2013-07-27T10:14:16.650 回答