1. ホーム
  2. python

[解決済み] ファイルの先頭に行を追加する

2023-05-10 03:08:01

質問

別のファイルを使って行うことはできますが、ファイルの先頭に行を追加するにはどうすればよいのでしょうか。

f=open('log.txt','a')
f.seek(0) #get to the first position
f.write("text")
f.close()

ファイルが追記モードで開かれているため、ファイルの末尾から書き込みを開始します。

どのように解決するのですか?

モード別 'a' または 'a+' を指定した場合、書き込みはファイルの終端で行われます。 write() 関数が起動された時点でファイルのポインタがファイルの終端になくても、 書き込みはファイルの終端で行われます:ポインタは書き込みの前にファイルの終端に移動します。ポインタは書き込みの前にファイルの最後に移動されます。

第一の方法 ファイルをメモリに読み込むのに問題がなければ、この方法を使うことができます。

def line_prepender(filename, line):
    with open(filename, 'r+') as f:
        content = f.read()
        f.seek(0, 0)
        f.write(line.rstrip('\r\n') + '\n' + content)

第二の道 :

def line_pre_adder(filename, line_to_prepend):
    f = fileinput.input(filename, inplace=1)
    for xline in f:
        if f.isfirstline():
            print line_to_prepend.rstrip('\r\n') + '\n' + xline,
        else:
            print xline,

このメソッドが内部でどのように動作しているのか、また、大きなサイズのファイルに対して採用できるのかどうかはわかりません。input に渡された引数 1 は、ある行をその場で書き換えることを可能にするもので、次の行は、その場での操作が行われるように前方または後方に移動されなければなりませんが、私はそのメカニズムを知りませんでした。