既に他の方々からの回答で、直接、ファイルの先頭にデータを追加するのは無理とあります。具体的な方法として、既に回答のある以下の2つになると思います。
- 新規ファイルに追加データを書込み、元ファイルのデータを追記、その後、旧ファイルの削除と新規ファイルのリネーム。
- 元ファイルのデータを全て読込み、追加データを先頭から、上書きし、元データを追記する。
Python と言うより、一般的な話になりますが、それぞれにメリット、デメリットがあります。
新規ファイルを作成する場合のメリットとして、
- 元ファイルのデータは、(書込み失敗でも)削除するまで残る。
- 読み書きファイルが分離しているので分かり易い。
デメリットとして、
- ハードリンクされている場合、リンクが切れ、別ファイルとなる。
- 一瞬であるが、ファイルが存在しない時がある。
- 別アプリ等がオープンしていると、削除/リネームが失敗し、複数ファイルが残る。(更新は書込みそのものが失敗)
- ファイルの属性が書き換えられる。(一手間掛けないと元ファイルと同じにならない)
となり、元ファイルを書き換える場合は、その逆となります。
どちらが良いかは、使う目的等によりますが、自分としては、元ファイルの更新が良いと考えます。(何度か、落とし穴にはまってるので)
具体的方法については、hayataka2049さんの回答を参考にすれば、良いでしょう。
なお、なんで先頭に追加できないかは、磁気テープの名残りと言うより、記憶装置が 4Kとか、8K とかのブロックで書き換えるからでしょう。ファイルシステムで吸収という方法もあるでしょうが、数バイトずらすのは大変と思います。
[追記]
新規ファイルの場合のデメリットを追加しました。
大半は、Linux(Unix)での問題となります。(質問者の環境はなんでしょう?)