2017-01-15 24 views
0

pythonでファイルを上書きする方法を知りたいと思います。私がopenステートメントで "w"を使用しているとき、私はまだ出力ファイルに1行だけを取得します。Pythonでファイルを正しく上書きする方法

article = open("article.txt", "w") 
    article.write(str(new_line)) 
    article.close() 

どうすれば問題を解決できますか教えてください。

+2

なぜあなたは問題があると思いますか?ファイルを上書きする場合は、出力に1行しか記述しないでください。 * 'a'dd *をファイルに書きたいのであれば、なぜそれを' '' 'モードで開きますか? – jonrsharpe

答えて

0

実際にを探している場合は、ファイルを行単位でに上書きする必要があります。追加作業が必要です - そこ以来、利用可能な唯一のモードは、実際にはライン・バイ・ラインの上書きを行うどちらもw儀式とa PPEND、r EADある

これはあなたが探しているものであるかどうかを確認してください:

# Write some data to the file first. 
with open('file.txt', 'w') as f: 
    for s in ['This\n', `is a\n`, `test\n`]: 
     f.write(s) 

# The file now looks like this: 
# file.txt 
# >This 
# >is a 
# >test 

# Now overwrite 

new_lines = ['Some\n', 'New data\n'] 
with open('file.txt', 'a') as f: 
    # Get the previous contents 
    lines = f.readlines() 

    # Overwrite 
    for i in range(len(new_lines)): 
     f.write(new_lines[i]) 
    if len(lines) > len(new_lines): 
     for i in range(len(new_lines), len(lines)): 
      f.write(lines[i]) 

ご覧のとおり、まずファイルiの内容を保存する必要がありますバッファー(lines)を置き換えてください。

そのis how the file modes work.

+0

4つのコード例をありがとうございます。それは私に非常にインスピレーションを与えました。今私は私の問題の解決策を知っている! –

0

"overwrite"は奇妙な用語です。あなたが上記のコードから複数の行を見ることを期待しているからです。

私はあなたに "write beyond"のようなものがあると推測しています。

0

の理由は、あなたの迅速な対応をありがとうございました。私は常に同じ内容の同じファイルを上書きしたい。ファイルは12行で構成されています。プログラムを実行すると、同じ内容のコンテンツを上書きする必要があります。今、私は 'a'ppendモードを使用するときにのみ、12行を生成することが可能です。ここに私の完全なソースコードがあります:

import re 
text = open("abc.txt") 
for line in text: 
    if re.search(r"\|+", line): 
     new_line = line.replace("|", "\t\t") 
     article = open("article.txt", "a") 
     article.write(str(new_line)) 
     article.close() 

どうすれば実現できますか?

+0

元の質問への回答を投稿するのではなく、新しい質問を開く必要があります。 – nlsdfnbch

関連する問題