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、次の 3 行を右にインデントする必要があります。

さらに、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.linesepOSに依存しない改行を挿入することに注意してください:)。

2 回繰り返して 2つ書くこともできます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

また、UNIX が Windows とは異なる方法で改行を処理するという理由'\r\n'だけでなく、代わりに試してみてください。'\n'

別のオプションは、このような普遍的な改行サポートでファイルを開くことです

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

「u」モードはデフォルトであるため、3.x では推奨されないことに注意してください。

edit 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 に答える