2017-08-12 4 views
-1

私はMBPでバージョン2.7.13を使用してPythonを使いました。シェルに印刷するコードを実行すると、結果が目的のリストに表示されます。しかし、テキストファイルに書き込むと、結果は異なります。任意のヒント、ポインタまたはヒント?リストをTextFileの後ろに挿入します。line.split - Python

import os 
import re 

filePath = "./ssh.log.txt" 
fd = open(filePath, 'r') 
writeFile = "./origin.txt" 
sf = open(writeFile, "w") 
sf.write("[scan origin hosts]") 
#print "[scan origin hosts]" 

with fd as reader : 
    for line in reader : 
     if "success" in line: 
      sf.write (line.split(' ')[2]) 
      #print (line.split(' ')[2]) 

出力をテキストファイルに

+2

あなたは '\ n'文字を忘れました! 'print'はラインフィードを追加します' write'はそうしません。あなたのループで 'sf.write(" \ n ")'を試してください –

+1

テキストファイルは私には同じように見えますが、新しい行やデータを区切る区切り文字はありません。 – BenT

+1

'print'と' write'は違った働きをします。あなたのループが 'print'で既に動作している場合、' print'に 'file'引数を使うだけで、' print(line.split( '')[2]、file = sf) ' –

答えて

0

シェルそれはPythonで見られているかのようになります。それはちょうど

with fd as reader : 
for line in reader : 
    if "success" in line: 
     sf.write (line.split(' ')[2]) 
     #print (line.split(' ')[2]) 
を変更、あまりにも難しいことではありません:以下のコードです

から

with fd as reader : 
for line in reader : 
    if "success" in line: 
     sf.write (line.split(' ')[2]+"\n") 
     #print (line.split(' ')[2]) 

このエラーは、文字列の正確な内容がファイルに出力され、pythonのprint関数は文字列の末尾に改行を追加してシェルに出力するために発生します。

+0

スクリプトに「\ n」を追加しました。それはトリックでした! – James

+0

助けてくれると助かりました – Superman

+0

助けたら私の答えを受け入れることができますか? – Superman

関連する問題