2017-06-07 7 views
1

ファイルを呼び出し、データを消去したり、改行を書き込んだりして印刷したい。 以下は私のプログラムとその出力です。Python:別のファイルから文字列を出力する

from sys import argv 
string, filename = argv 
text = open(filename, 'w+') 
text.truncate() 
line1 = "hey" 
line2 = "I was doing just fine before I met you" 
line3 = "I drink too much and that's an issue but I'm okay" 
text.write('%s\n%s\n%s\n' %(line1, line2, line3)) 
new = text.read() 
old = text.readlines() 
print "%s" %(new) 
print old 
print text.readlines() 
text.close() 

出力:

[] []

+0

'text = open(ファイル名、 'w')'それだけです、あなたは設定されています。とにかく、あなたがもう一度それを読むには、 '' r ''モードでもう一度それを開く必要があります。 –

+0

@ Shivaそれから、text.read()にエラーが発生していて、読み取りモードでは開かれていません。 – Mihir

+0

@Mihirファイルを読む前に、ファイルを読み取りモードで開く必要があります。 – ILostMySpoon

答えて

2

したがって、seek(0)を追加するとここでジョブが実行されます。 seek(0)は先頭にポインタを設定します。

from sys import argv 
    string, filename = argv 


    text = open(filename, 'w+') 
    text.truncate() 

    line1 = "hey" 
    line2 = "I was doing just fine before I met you" 
    line3 = "I drink too much and that's an issue but I'm okay" 

    text.write('%s\n%s\n%s\n' %(line1, line2, line3)) 
    text.seek(0) 
    new = text.read() 
    text.seek(0) 
    old = text.readlines() 
    print "%s" %(new) 
    print old 
    text.seek(0) 
    print text.readlines() 

    text.close() 

出力::私はあなたに私はあまり飲ま に会った前に、私はうまくやっていたし、それが問題だが、私は大丈夫

[だ

ちょっと 」 はここで動作するコードです私はあなたに会う前にうまくやっていました\ n "、"私はあまり飲んでいませんが問題ですが、私は大丈夫です\ n "] ['hey \ n'、 '私があなたと会う前にうまくいって\ n、 ""私はあまり飲みません。それは問題ですが、私は大丈夫です\ n "]

1

だから、あなたのエラーは(あなたのコメントで、あなたが読んせないということです)。

これは、書き込みモードでファイルを開くために使用されたファイルポインタを使用して読み取ろうとしているためです。

from sys import argv 
string, filename = argv 
with open(filename, 'w') as text: 
    line1 = "hey" 
    line2 = "I was doing just fine before I met you" 
    line3 = "I drink too much and that's an issue but I'm okay" 
    text.write('%s\n%s\n%s\n' %(line1, line2, line3)) 

with open(filename, 'r') as text: 
    ... 
+0

OPが新しい行を書き込む前にファイルのデータを消去したいので、 'w +'参照を使用することもできます。このようにして、彼は 'truncate'を呼び出す必要もありません。 – ILostMySpoon

+0

私もトランケートを使用しています。だから+読み書き+切り捨て、我々は 'w +'を使用してなぜ私はここでそれを使用することはできません? – Mihir

+0

@Mihirもしあなたが 'w +'でファイルを開くのであれば、 'truncate'を呼び出す理由はありません。 – ILostMySpoon

関連する問題