2017-09-28 20 views
-1

私は多くのテキスト行からなるテキストファイルを持っています。Pythonのテキストファイルの最初の行だけを置き換えます。

内容に関係なく、python v3.6を使用してテキストファイルの最初の行だけを置き換えたいと思います。私は、行単位の検索を行い、それに応じて行を置換する必要はありません。質問と重複はありませんSearch and replace a line in a file in Python

ここに私のコードです。

import fileinput 

file = open("test.txt", "r+") 
file.seek(0) 
file.write("My first line") 

file.close() 

コードは部分的に機能します。元の最初の行の文字列が"My first line"より長い場合、余分な部分文字列はそのまま残ります。より明確にするため、元の行が"XXXXXXXXXXXXXXXXXXXXXXXXX"の場合、出力は"My first lineXXXXXXXXXXXXXX"になります。出力を"My first line"にしたい。コードを実装するより良い方法はありますか?

+0

[Pythonでファイルの行を検索し、置き換える](https://stackoverflow.com/questions/39086/search-and-の可能性のある重複ファイル内のファイルを置き換える) – wwii

+0

ようこそ。時間をかけて[ask]とそれに含まれるリンクを読んでください。 – wwii

+0

@wwii、私は重複があるとは思わない。私は質問を編集しました。 – user3848207

答えて

1

これを行うには、readlinesとwritelineを使用できます。 たとえば、2つの行(Out [3])を含む "test.txt"というファイルを作成しました。ファイルを開いた後、f.readlines()を使って文字列形式のリスト内のすべての行を取得できます。それから、私がする必要があるのは、文字列の最初の要素を必要なものに置き換えてから書き戻すことだけです。

with open("test.txt") as f: 
    lines = f.readlines() 

lines # ['This is the first line.\n', 'This is the second line.\n'] 

lines[0] = "This is the line that's replaced.\n" 

lines # ["This is the line that's replaced.\n", 'This is the second line.\n'] 

with open("test.txt", "w") as f: 
    f.writelines(lines) 
+0

コードやデータの画像を掲載しないでください。時間をかけて[ask]とそれに含まれるリンクを読んでください。 – wwii

+0

最初に正式にファイルを閉じずにファイルを開くのがよいでしょうか? – saintsfan342000

+0

@ saintsfan342000実際それは良い点です。私は尋ねられた質問の解決策を提示しようとしていました。常にファイルを閉じてから再度開いてください。 –

1

ファイルへのコンテンツの読み書きは、既に@Zhangによって行われています。

私はすべての行を読むのではなく、効率のために答えを出すだけです。

用途:shutil.copyfileobj

from_file.readline() # and discard 
to_file.write(replacement_line) 
shutil.copyfileobj(from_file, to_file) 

Reference

関連する問題