2016-04-08 10 views
0

このコードを実行してcropquantityの値を入力すると、crop database.txtに書き込まれませんが、新しい空白のテキストファイルとしてcrop database.txtが作成されます。誰がなぜこれが分かっていますか?私はファイルを閉じる方法のためですか?誰でもこの.txtファイルへの書き込みが機能しない理由を知っていますか?

crop = input("Which crop? ") 
quantity = input("How many? ") 

with open ('cropdatabase.txt', 'a+') as file: 

lines = file.readlines() 

file.close() 

with open ('cropdatabase.txt', 'a+') as file: 

for row in lines: 

    if crop in row: 

     row = str(a) 
     split_2 = a.split (',') 
     split_2.append (quantity) 

    else: 

     file.write ('\n') 
     file.write (crop + ' ') 
     file.write (quantity + ' ') 

file.close() 
+0

'with'を使用する場合、明示的にファイルを閉じる必要はありません。範囲外になると自動的に閉じます。 – Arpan

+0

書き込みのコードはOKです。私は、作物と量が初期化されていることを確認するためにいくつかの印刷ステートメントを試しましたか、ifのelseブロックに入ったことはありますか? – nhouser9

答えて

0

は、コメントとあなたのコードです:

crop = input("Which crop? ") 
quantity = input("How many? ") 

あなたのpython 2を使用している場合、これは悪い考えです。あなたが追加するには、このファイルを開いているが、ちょうどあなたが

with open ('cropdatabase.txt', 'a+') as file: 

「オープンで」を使用するのであなたがクローズする必要はありませんそれを

lines = file.readlines() 

file.close() 

を読んでいる

with open ('cropdatabase.txt', 'a+') as file: 

raw_input使用もう一度追加して追加します。ファイルを 'w'で書き換える必要があります

for row in lines: 

    if crop in row: 

     row = str(a) 
     split_2 = a.split (',') 
     split_2.append (quantity) 

これは意味をなさないものです。 aとは何ですか?
split2でいじくる後(再び、なぜ)あなたは何

else: 

     file.write ('\n') 
     file.write (crop + ' ') 
     file.write (quantity + ' ') 

今、あなたが一致していないラインに作物や数量を書くことはありませんか?再び

file.close() 

、不要近いここ

はraw_input使用

crop = raw_input("Which crop? ") 
quantity = raw_input("How many? ") 

は、両方が文字列のラインに完全なファイルを読んで、それを閉じ

with open ('cropdatabase.txt', 'r') as file: 
    lines = file.readlines() 

になります私のコードです(自動)

with open ('cropdatabase.txt', 'w') as file: 
    for row in lines: 
     if crop in row: 
      row = row.strip(), ", ", quantity 
      file.write(row) 

あなたが指定されていないので、私は作物に一致する行を書き、コンマ

 else: 
      file.write(row) 

これを試してみて、あなたが見るものに戻ってくる後に数量を追加しています。入力ファイルを別の名前に保存して2つを比較できるようにします。

1

あなたは空のファイル(または非存在)で始まる場合は、リストlinesは空になります。だから、何かを書くあなたのコードは決して動かない。

0

まず、あなたが開いて持っているので)、その後、あなたが(f.closeを必要としないraw_input

crop = raw_input("Which crop? ") 
quantity = raw_input("How many? ") 

を使用する必要があります。

0

ハッハッハ小さなバグ。開いているファイルを読み出すための

  • 使用オープン(ファイル名、 'R')
  • いくつかのデータを付加するための使用オープン(ファイル名、 'A')exsistingファイルへ
  • 使用(ファイル名、 'W' )を使用してファイルを作成/書き換えます。

「a」を追加してファイルを開くと、ファイルポインタがEOF(ファイルの終わり)ポインタの直前に配置されていると表示されます。だからあなたは何のデータも読んでいません。

「a +」を使用することをお勧めしますが、それは素晴らしいようですが、特定のフォーマットを使用するとコードを読みやすくなります。

は、このことができます。この

with open ('cropdatabase.txt', 'r') as file: 

    lines = file.readlines() 

希望をしてみてください。ここで

関連する問題