2

関連する質問に関しては、Python でファイルの先頭にテキストや行を追加する方法を知りたいと思います。テキスト/ファイル操作が簡単な言語であることが示唆されています。それで、私は以前のリンクされた C++ の質問をしましたが、Python でこれを行う方法を教えてもらえますか?

リンクされた(関連する)質問からの引用:

ファイルの先頭に行を追加できるようにしたいと思います。

私が書いているこのプログラムは、ユーザーから情報を受け取り、それをファイルに書き込む準備をします。その場合、そのファイルは既に生成された差分になります。最初に追加されるのは、Debian の DEP3 パッチ タグ付けシステムと互換性を持たせる記述子とタグです。

誰か提案やコードがありますか?


関連: ファイルの先頭にテキストと行を追加する (C++)

4

2 に答える 2

7

最近、同様のファイル I/O に関する質問がたくさんあります。

つまり、新しいファイルを作成する必要があります

  1. 最初に、ファイルに新しい行を書き込みます
  2. 古いファイルから行を読み取り、ファイルに書き込みます

最初に追加された新しい行のそれぞれが、最初の対応する元の行のそれぞれよりも長いことを保証できる場合は、その場でそれを行うことができます:

f = open('file.txt','r+')
lines = f.readlines() # read old content
f.seek(0) # go back to the beginning of the file
f.write(new_content) # write new content at the beginning
for line in lines: # write old content after new
    f.write(line)
f.close()

上記の例では、ファイルの内容が新しい内容で上書きされるため、ファイルの先頭にある位置をシークした後、すべてのデータを完全に書き込みます。

それ以外の場合は、新しいファイルに書き込む必要があります

f = open('file.txt','r')
newf = open('newfile.txt','w')
lines = f.readlines() # read old content
newf.write(new_content) # write new content at the beginning
for line in lines: # write old content after new
    newf.write(line)
newf.close()
f.close()
于 2012-06-27T15:58:55.427 に答える
0

このようなものが動作するはずです:

with open('new.txt', 'w') as new:
    with open('prefix.txt') as prefix:
        new.write(prefix.read())
    with open('old.txt') as old:
        new.write(old.read())

old.txt または prefix.txt にバイナリ コンテンツが含まれている場合は、それぞれの open 呼び出しに 'rb' 引数を追加し、最初の open() 呼び出しの flags 引数に 'b' を追加する必要があります。

于 2012-06-27T15:37:17.987 に答える