2016-06-23 3 views
0

LPTHWでex16を正常に完了しましたが、今ではレッスンをよりよく理解するために自分のスクリプトでそれを複製しようとしています。次のようにLPTHW Ex 16、imyが自分のスクリプトを使用して返信する

私のスクリプトを書くために開いていないファイルです:

I0Error)は( scribble.truncateに、ライン23、

ファイル「bruce.py」:私はと以下のように入力したが、シェルに戻ります

from sys import argv 
script, file_name=argv 
scribble=open(file_name) 

    print "Master Bruce, here is your file: %s" % file_name 

    print scribble.read() 

print """ 

Master Bruce, to change the contents of the file 
simply press ENTER and type three lines: 

""" 

    line1=raw_input("line 1:") 
    line2=raw_input("line 2:") 
    line3=raw_input("line 3:") 

    print "Just a few seconds Master Bruce..." 

    scribble.truncate() 

    scribble.write(line1,line2,line3) 

    scribble.close 

私の理解は、ファイルがすでに5行目で開いていることです。私も22行目でscibble.open()を試しましたが、それはどちらもうまくいきませんでした。あなたの助けに感謝します。

+0

彼らはコードの一部である場合を除き、改行を削除し、「コード」、「{}」のコードの書式を使用してください - いくつかのpeobleは、コードをコピーし、それを実行して、余分なlinenumbersは、より多くの仕事の源であります...ちょうどあなたが合理的な答えを得るより高い確率を得るのを手助けしようとしている、あなたの質問を編集してください。 –

+0

左の列の数字を削除し、指示に従って括弧を使用しました。これは良いですか? – dubg

+0

私はそれが "コード"であることを示すためにメニューから角括弧を意味しました、編集を参照してください –

答えて

0

それが言う正確に何を意味:ファイルが書き込みための開かれていません。それを読み取り専用モードで開きました。

scribble=open(file_name) 

はあなたが読み取り/書き込みモードでファイルを開く必要があり

scribble=open(file_name, "r") 

に相当します。最初に切り捨てるのではなく、追加したくないので、r +を使用してください。

scribble=open(file_name, "r+") 

open()hereのドキュメントをブラッシュアップする必要があります。

ちなみに、より巧妙な取り扱いのためにキーワードhereのファイルを開くことも検討してください。

with open(file_name, "r+") as scribble: 
    # do things 
    ... 
+0

ありがとうございます。私はそれをr +に変更することができました。そして、「書き込み」部分については、以下を使用しました: scribble.write( "\ n%s \ n%s \ n%s"%(line1、line2、line3)) – dubg

0

The most commonly-used values of mode are 'r' for reading [...]. If mode is omitted, it defaults to 'r' .

[...]

Modes 'r+' , 'w+' and 'a+' open the file for updating (reading and writing); note that 'w+' truncates the file.

source

+0

ああ、私は定義された変数落書きの下に 'r + w'を加えて 'print scribble.read()'ちょうど「印刷するかしこ」ですか? – dubg