0

このプログラムを初めて実行すると、結果のファイルには新しい行以外には何も含まれていません。しかし、2回目に実行すると、「out.txt」に正しく書き込まれますが、最初の実行からの新しい行はまだそこにあります。初めて正しく動作しないのはなぜですか?

bhaarat = open('bhaarat.txt', 'r+')
bhaarat_read = bhaarat.read()

out = open('out.txt', 'r+')
out_read = out.read()

bhaarat_split = bhaarat_read.split()

for word in bhaarat_split:
    if word.startswith('S') or word.startswith('H'):
        out.write(word + "\n")

bhaarat.write('\n23. English\n')
print out_read
print bhaarat_read

bhaarat.close()
out.close()
4

1 に答える 1

0

これは Windows の問題です。回避策(pythonメーリングリストを参照)は使用することです

f.seek(f.tell())

オプションの1 つを使用して開かれたファイルへの呼び出しread()とファイルに対する呼び出しの間。write()f+

あなたの問題に合わせてbhaarat.seek(bhaarat.tell())、ファイルを最初に読んだ後、bhaarat_read = bhaarat.read()で書き込む前に呼び出す必要がありますbhaarat.write('\n23. English\n')。あなたのout.

Python3 ではこの問題は修正されているので、切り替える理由がもう 1 つあります :)


編集次のコードは私にとってはうまくいきます。ファイルbhaarat.txtとのout.txt両方が存在する必要があります。

bhaarat = open('bhaarat.txt', 'r+')
bhaarat_read = bhaarat.read()
bhaarat.seek(bhaarat.tell())
out = open('out.txt', 'r+')
out_read = out.read()
out.seek(out.tell())
bhaarat_split = bhaarat_read.split()

for word in bhaarat_split:
    if word.startswith('S') or word.startswith('H'):
        out.write(word + "\n")

bhaarat.write('\n23. English\n')
print out_read
print bhaarat_read

bhaarat.close()
out.close()
于 2013-03-01T09:19:26.967 に答える